Declenchement permanent de script de type "device
Publié : 22 avr. 2020, 13:46
Bonjour
Je fais un script qui est sensé mettre à jour un device virtuel (Pompe Duree)de type custom, comptant le temps de fonctionnement d'une pompe.
Je fais donc un script lua , trigger sur device", déclenché sur un test devicechanged (On/Off)de l'état de ma pompe (Piscine_Pompe de type switch), et en m'aidant d'une variable utilisateur initialisée quand la pompe passe à On, je calcule la durée jusqu'au Off suivant et ajoute cette durée à la durée déjà existante.
Tout ceci fonctionnerait bien si.... mon script ne se déclenchait pas en permanence ( toutes les secondes ?) au lieu de se déclencher sur un changement d'état
2020-04-22 13:31:12.413 Status: LUA: 811
2020-04-22 13:31:12.414 Status: LUA: 806
2020-04-22 13:31:12.414 Status: LUA: 11.01
2020-04-22 13:31:12.477 Status: EventSystem: Script event triggered: Pompe Piscine temps
2020-04-22 13:31:13.851 Status: LUA: 811
2020-04-22 13:31:13.851 Status: LUA: 806
2020-04-22 13:31:13.851 Status: LUA: 11.06
2020-04-22 13:31:13.958 Status: EventSystem: Script event triggered: Pompe Piscine temps
ci dessous mon code
....
Le script déroule que la pompe soit Off ou On
Ou me trompeje ?
Je fais un script qui est sensé mettre à jour un device virtuel (Pompe Duree)de type custom, comptant le temps de fonctionnement d'une pompe.
Je fais donc un script lua , trigger sur device", déclenché sur un test devicechanged (On/Off)de l'état de ma pompe (Piscine_Pompe de type switch), et en m'aidant d'une variable utilisateur initialisée quand la pompe passe à On, je calcule la durée jusqu'au Off suivant et ajoute cette durée à la durée déjà existante.
Tout ceci fonctionnerait bien si.... mon script ne se déclenchait pas en permanence ( toutes les secondes ?) au lieu de se déclencher sur un changement d'état
2020-04-22 13:31:12.413 Status: LUA: 811
2020-04-22 13:31:12.414 Status: LUA: 806
2020-04-22 13:31:12.414 Status: LUA: 11.01
2020-04-22 13:31:12.477 Status: EventSystem: Script event triggered: Pompe Piscine temps
2020-04-22 13:31:13.851 Status: LUA: 811
2020-04-22 13:31:13.851 Status: LUA: 806
2020-04-22 13:31:13.851 Status: LUA: 11.06
2020-04-22 13:31:13.958 Status: EventSystem: Script event triggered: Pompe Piscine temps
ci dessous mon code
Code : Tout sélectionner
--retourne une valeur sur 2 digit (exemple 1 retourne 01)
function deuxDigits(nombre)
nombre = string.format("%02d",nombre)
return nombre
end
commandArray = {}
-- Si Piscine_Pompe= 'On'
if devicechanged['Piscine_Pompe'] == 'On' then
-- alors on met la variable PompeOn avec l'heure de début
commandArray['Variable:PompeOn'] = (os.date('%H:%M'))
-- sinon ( Piscine_Pompe='Off'
else
-- alors on récupère l'heure d'arret
local SFin = (os.date('%H:%M'))
-- transformation en minutes
local MFin=tonumber(string.sub(SFin, 1, 2))*60+tonumber(string.sub(SFin,4,5))
print (tostring(MFin))
-- on récupère l'heure de début
local SDebut= uservariables['PompeOn']
-- transformation en minutes
local MDebut=tonumber(string.sub(SDebut, 1, 2))*60+tonumber(string.sub(SDebut,4,5))
print (tostring(MDebut))
-- on fait la fifférence
local MDuree=MFin-MDebut
-- on lit la valeur dejà enregistreée
local SCumul=otherdevices_svalues['Pompe Duree']
local MCumul=tonumber(string.sub(SCumul, 1, 2))*60+tonumber(string.sub(SCumul,4,5))
local MCumul=MCumul+MDuree
-- on convertit la différence au format 'hh.mm'
local hh = math.floor(MCumul/60)
local mm = MCumul % 60
-- on formatte la chaine heure
local SCumul=tostring(deuxDigits(hh))..'.'..tostring(deuxDigits(mm))
print (SCumul)
-- on met à jour le device 'Pompe temps de marche'
commandArray[129] = {['UpdateDevice'] = 129 .. '|0|' .. SCumul}
end
return commandArray
Le script déroule que la pompe soit Off ou On
Ou me trompeje ?