Script LUA et multiple ligne dans les logs

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
bricololo
Messages : 47
Inscription : 18 mars 2018, 14:23
Localisation : Nantes(44)

Script LUA et multiple ligne dans les logs

Message par bricololo »

Bonjour,
Cela fait un moment que j'ai des scripts (qui fct bien) mais qui me génèrent énormément de lignes dans les logs.
Y a t'il quelque chose que je fait mal ? Puis-je les optimiser ?
Merci pour vos réponses.

Voici un exemple

Code : Tout sélectionner

commandArray = {}

for deviceName,deviceValue in pairs(otherdevices) do
    if (devicechanged['Portail coulissant'] or devicechanged['Door Garage']) then
        -- Coulissant ouvert seul        
        if (otherdevices['Portail coulissant']=='Open' and otherdevices['Door Garage']=='Closed') then
            print("Coulissant ouvert seul")
        end    
    end
return commandArray
et j'obtient

Code : Tout sélectionner

 2020-08-14 18:13:19.405 (Gateway2) Lux (Gateway2 Lux)
2020-08-14 18:13:20.839 (RFX) Temp + Humidity (Salon)
2020-08-14 18:13:26.010 (Inter Virtuel) Lighting 1 (Coulissant telecommande)
2020-08-14 18:13:26.397 (RFX) Security (Unknown)
2020-08-14 18:13:27.597 (Inter Virtuel) Lighting 1 (Portail coulissant)
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.623 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.624 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.625 Status: LUA: Coulissant ouvert seul
2020-08-14 18:13:27.625 Status: LUA: Coulissant ouvert seul 
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Script LUA et multiple ligne dans les logs

Message par denis_brasseur »

Ton print ne devrait apparaître que lors du changement d'état de l'un de tes 2 devices, Portail coulissant ou Door Garage, et que si Portail coulissant est fermé et Door Garage ouvert.
Ton script est bien de type Trigger Device ?

De plus, il manque un end dans ton code

Code : Tout sélectionner

for deviceName,deviceValue in pairs(otherdevices) do

end

Code : Tout sélectionner

commandArray = {}

for deviceName,deviceValue in pairs(otherdevices) do
    if (devicechanged['Portail coulissant'] or devicechanged['Door Garage']) then
        -- Coulissant ouvert seul        
        if (otherdevices['Portail coulissant']=='Open' and otherdevices['Door Garage']=='Closed') then
            print("Coulissant ouvert seul")
        end    
    end
end
return commandArray
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
bricololo
Messages : 47
Inscription : 18 mars 2018, 14:23
Localisation : Nantes(44)

Re: Script LUA et multiple ligne dans les logs

Message par bricololo »

Merci pour ta réponse.

Ton print ne devrait apparaître que lors du changement d'état de l'un de tes 2 devices
, Portail coulissant ou Door Garage, et que si Portail coulissant est fermé et Door Garage ouvert.
==> C'est le cas, mais plutôt de n'avoir qu'une seule ligne, j'en ai plein.

Ton script est bien de type Trigger Device ?
==> Oui

De plus, il manque un end dans ton code
==> Tu as raison je l'ai oublié dans l'exemple, car je n'ai pas mis la totalité du code.
Mon script fct parfaitement, mais, je ne comprend pas pourquoi cela génère autant de ligne. Le chgt d'état d'un device ne devrait avoir lieu qu'une seule fois pourtant.
Je n'ai pas ce problème avec un script de chgt d'état sur une variable.
Cela me pose un problème pour la sonnette de porte sur la gateway, car cela envoie de multiple commande sur la gateway et elle sonne pendant 2 min.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Script LUA et multiple ligne dans les logs

Message par vil1driver »

Salut,

Evite ces fichu boucles for qui ne servent à rien et qui sont certainement la cause de ton soucis.

Surtout que tu boucles sur la table otherdevices au lieu de devicechanged

Ceci

Code : Tout sélectionner

commandArray = {}

for deviceName,deviceValue in pairs(otherdevices) do
    if (devicechanged['Portail coulissant'] or devicechanged['Door Garage']) then
        -- Coulissant ouvert seul        
        if (otherdevices['Portail coulissant']=='Open' and otherdevices['Door Garage']=='Closed') then
            print("Coulissant ouvert seul")
        end    
    end
end
return commandArray
Se remplace par ceci

Code : Tout sélectionner

commandArray = {}
if (devicechanged['Portail coulissant']=='Open' and otherdevices['Door Garage']=='Closed')then
        -- Coulissant ouvert seul        
         print("Coulissant ouvert seul")
end
return commandArray
Pour une vraie aide, il faut montrer ton script dans son intégralité
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
bricololo
Messages : 47
Inscription : 18 mars 2018, 14:23
Localisation : Nantes(44)

Re: Script LUA et multiple ligne dans les logs

Message par bricololo »

Merci vil1driver,
C'était bien les boucles for.
Dire que cela faisait longtemps que je me prenait la tête sur ce problème.
Un grand Merci :P :P :P
Répondre