Page 1 sur 1

Script LUA et multiple ligne dans les logs

Publié : 14 août 2020, 18:19
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 

Re: Script LUA et multiple ligne dans les logs

Publié : 15 août 2020, 07:15
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

Re: Script LUA et multiple ligne dans les logs

Publié : 15 août 2020, 08:50
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.

Re: Script LUA et multiple ligne dans les logs

Publié : 15 août 2020, 11:27
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é

Re: Script LUA et multiple ligne dans les logs

Publié : 15 août 2020, 12:13
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