Page 1 sur 2

Script LUA executé plusieurs fois

Publié : 07 sept. 2018, 20:45
par frtoto
Bonsoir,

petite question pour comprendre :

ce script s'éxecute souvent 2 fois de suite, mais parfois une seule fois, une explication ? (il est bien mis en mode "DEVICE")
par contre il fonctionne bien et n'engendre pas d'erreur dans le log. Merci

exemple :
2018-09-07 20:00:16.848 Status: LUA: humi = 68
2018-09-07 20:00:16.848 Status: LUA: vitesse 1
2018-09-07 20:00:16.850 Status: EventSystem: Script event triggered: vmc_cine_2
2018-09-07 20:00:16.885 Status: LUA: humi = 68
2018-09-07 20:00:16.885 Status: LUA: vitesse 1
2018-09-07 20:00:16.886 Status: EventSystem: Script event triggered: vmc_cine_2


et plus tard :
2018-09-07 20:12:07.160 Status: Incoming connection from: 10.0.0.152
2018-09-07 20:21:32.646 Status: LUA: humi = 67
2018-09-07 20:21:32.646 Status: LUA: vitesse 1
2018-09-07 20:21:32.648 Status: EventSystem: Script event triggered: vmc_cine_2

2018-09-07 20:29:00.464 Status: YeeLight: New Light Found (10.0.0.93/YeeLight LED (Stripe))


Code : Tout sélectionner

-- variable
humidite=(otherdevices_humidity['humidite_cine_capteur'])
humidite=tonumber(humidite)
            
commandArray = {}

if (devicechanged['humidite_cine_capteur'])
          
        then   
            print("humi = "..humidite) 
            if humidite > 70
                then 
                commandArray['sonoff_Dual_1_btn_1']='Off'
                commandArray['sonoff_Dual_1_btn_2']='On'
                print("vitesse 2")    
               
            else
                commandArray['sonoff_Dual_1_btn_2']='Off'                
                commandArray['sonoff_Dual_1_btn_1']='On'
                print("vitesse 1")
            end 
end
return commandArray

Re: Script LUA executé plusieurs fois

Publié : 07 sept. 2018, 23:52
par lmet
Bonsoir,

Dès lors où l'on scripte :

Code : Tout sélectionner

if (devicechanged['humidite_cine_capteur']) then 
sans donner de valeur pour laquelle le changement est validé alors qui décide ?
A mon humble avis il faut comparer avec une valeur ">70" ou "~=70" dès le départ.

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 10:39
par frtoto
j'avais essayé de mettre la comparaison à ce niveau mais cela engendre des erreurs... attempt to compare number with nil
Ce n'est pas tant la fréquence de déclenchement qui me pose question mais plutôt pourquoi 2 fois en moins d'une seconde ?

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 10:55
par vil1driver
Salut,

C'est peut être le capteur qui envoie 2 fois.
Peut être temp et hum sur des envois séparés..
Comment se fait il que les logs ne montrent pas ces réceptions ?

C'est quoi ton capteur ?

Il serait intéressant de voir ce que contient
devicechanged['humidite_cine_capteur']

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 10:57
par frtoto
vil1driver a écrit : Comment se fait il que les logs ne montrent pas ces réceptions ?
Edit : j'ai repondu trop vite...

capteur aqara

J'ai mis en dispositif uniquement le type Humidity (1ACD 1 humidite_cine_capteur Humidity LaCrosse TX3 Humidity 66 %)
Il serait intéressant de voir ce que contient
devicechanged['humidite_cine_capteur']
Je peux faire ça comment ? (noob inside)

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 11:01
par vil1driver
Non, ceux de Domoticz
De ce genre

Code : Tout sélectionner

2018-09-08 10:56:35.612 (rfxcom) Temp + Humidity (parents)

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 11:08
par frtoto
En fait dans les logs je n'en ai aucun qui cite humidite_cine_capteur
Tous les autres apparaissent bien
par contre le seul que j'ai qui pourrait correspondre est

Code : Tout sélectionner

2018-09-08 11:06:34.911 (Passerelle) Humidity (Xiaomi Humidity)

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 11:12
par vil1driver
Oui voila c'est certainement ça même si étonnant que ce ne soit pas le nom du device.
Son apparition correspond avec les lancements du script ?
Et cela se produit il parfois également 2 fois de suite ?

Peut-être un

Code : Tout sélectionner

print(devicechanged['humidite_cine_capteur']) 
Sinon pour un script basé sur l'humidité, peut être qu'un type Time serait suffisant (plus d'usage de devicechanged)

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 11:32
par lmet
frtoto a écrit :j'avais essayé de mettre la comparaison à ce niveau mais cela engendre des erreurs... attempt to compare number with nil
Ce n'est pas tant la fréquence de déclenchement qui me pose question mais plutôt pourquoi 2 fois en moins d'une seconde ?
Le capteur envoie peut-être deux valeurs dont une à "nil" essayes ce bout de code :

Code : Tout sélectionner

if (devicechanged['humidite_cine_capteur']) then 
	local x = os.clock()
	print ("Valeur humidité : " .. tostring(humidite_cine_capteur) .. " heure : " .. tostring(x))
end
tu devrais récupérer les valeurs dans les logs ainsi que l'heure à laquelle cela c'est produit.

Re: Script LUA executé plusieurs fois

Publié : 08 sept. 2018, 11:44
par vil1driver
Erreur dans ton code lmet
Sinon tostring est superflu