delay otherdevices_lastupdate fonction timedifference

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
Oui_OuiBlog
Messages : 63
Inscription : 27 juil. 2017, 21:53

delay otherdevices_lastupdate fonction timedifference

Message 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 ?
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: delay otherdevices_lastupdate fonction timedifference

Message 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...).
Dernière modification par thier le 10 août 2018, 11:31, modifié 1 fois.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Oui_OuiBlog
Messages : 63
Inscription : 27 juil. 2017, 21:53

Re: delay otherdevices_lastupdate fonction timedifference

Message par Oui_OuiBlog »

Je teste ça

Merci :)
Répondre