Page 1 sur 1

delay otherdevices_lastupdate fonction timedifference

Publié : 10 août 2018, 00:34
par Oui_OuiBlog
Bonjour,

J'essaye de lancer un script toutes les 10 minutes en utilisant cette condition (Bien entendu, crontab n'est pas utilisable puisque la fonction doit être lancée par Domoticz pour fonctionner) :

Code : Tout sélectionner

if (timedifference((otherdevices_lastupdate['Prod_PV'])) > 600 and timeofday['Daytime']) then
timedifference est une fonction intégrée au script qui calcule le temps passé entre maintenant et une variable. C'est la fonction de base que l'on trouve un peu partout

Code : Tout sélectionner

function timedifference (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
Le script fonctionne par contre il se lance systématiquement 2 fois en moins d'une seconde (~200 ms entre chaque exécution), comme si la table otherdevices_lastupdate n'était pas mise à jour immédiatement (ou si la fonction ne tenait pas compte des millisecondes, ce qui semble être le cas).

Quelqu'un a déjà rencontré le problème et a trouvé un moyen de le contourner ?

Re: delay otherdevices_lastupdate fonction timedifference

Publié : 10 août 2018, 10:08
par thier
La fonction lastupdate sert à calculer le temps écoulé entre l'heure actuelle et le dernier changement d'état d'un device. Pour lancer un script toutes les 10 minutes tu fais un script_time qui commence par if (os.date("*t").min%10 == 0) then. Ton script sera lu toutes les minutes mais il ne s'exécutera que pour les multiples de 10 minutes (heure pile, heure+10 mn, heure +20mn, etc...).

Re: delay otherdevices_lastupdate fonction timedifference

Publié : 10 août 2018, 10:40
par Oui_OuiBlog
Je teste ça

Merci :)