Script timedifference

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Script timedifference

Message par dokho »

Bonjour,

Après y avoir passé plusieurs heures sans succès (je dois vraiment être mauvais :lol: ) je viens chercher de l'aide ici.

Je voudrais faire un suivi du temps de chauffage (ma chaudière gaz est pilotée par domoticz via un contact sec) et afficher les infos dans des dummy texte: durée dernier cycle, cumul journalier.

Histoire de pas tout casser je fais mes tests dans un script à part et une fois fonctionnel j'intégrerais au script de chauffage.

Je pensais que ça serait simple mais ... ce n'est pas le cas, dès le départ j'ai un problème pour récupérer le delta entre l'état ON et l'état OFF du device.
Je suis quasiment sûr qu'il s'agit d'un truc tout bête mais je n'arrive pas à mettre le doigt dessus.

Le script (tout du moins son début):

Code : Tout sélectionner

 function timedifference(d)
   s = otherdevices_lastupdate[d]
   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

commandArray = {}

if (devicechanged['TEST1'] == 'Off')
then

-- AFFICHAGE DUREE DERNIER CYCLE --

--on calcule la durée écoulée entre le off et le précédent état (on) et on l'affiche dans le log
delta = os.date("!%X",timedifference('TEST1'))
print('calcul temps cycle delta : ' .. delta)

--on met à jour le compteur "durée dernier cycle"
commandArray[1]={['UpdateDevice'] = 196 .. '|0|' .. delta}

end
return commandArray
Le changement d'état du device est bien détecté, le script se lance mais la durée ne s'affiche pas ...
Dans le log j'ai ça:

Code : Tout sélectionner

2021-01-08 12:16:41.122  (Dummy) Light/Switch (TEST1)
2021-01-08 12:16:58.916  (Dummy) Light/Switch (TEST1)
2021-01-08 12:16:58.963  Status: LUA: calcul temps cycle delta : 00:00:00
On voit bien le passage à ON à 12:16:41.122, le passage à OFF à 12:16:58.916 donc je devrais avoir un delta de 00:00:17 ce qui n'est pas le cas dans l'affichage ...

Quelqu'un peut il me dire où j'ai fait une bourde ? :lol:

Merci
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script timedifference

Message par Keros »

Je pense que lorsque tu actives ton Test1 la deuxième fois, le lastupdate se mets à jour et ne contient plus l'info de la première action.

Tu pourrais faire différemment avec un script time qui vérifierai toutes les minutes si ton chauffage est allumé ou pas. Tu envois ensuite une info 0 ou 1 dans un device virtuel de mesure. Tu peux ainsi avoir le suivi des périodes de chauffe.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: Script timedifference

Message par dokho »

Bonjour.

Merci pour ta réponse.

Sinon, est-ce que tu penses que c'est jouable de noter, dans une variable, l'heure de déclenchement (le ON) via un "if (devicechanged['TEST1'] == 'On)" et de faire ensuite le calcul ?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script timedifference

Message par Keros »

Ah oui tu peux tout à fait faire ça aussi. Il ne faut pas oublier de mettre à jour la variable. Ce qui oblige de passer forcément par un script : pas d'action manuelle directe. C'est à mon avis une solution avec un risque d'erreur.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: Script timedifference

Message par dokho »

Pourquoi un risque d'erreur ?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script timedifference

Message par Keros »

Si la variable n'est pas mise à jour lors d'une modification du chauffage, ça peut boguer (possiblement planter le script) ou donner des infos non conforme au réel.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: Script timedifference

Message par dokho »

Si la variable est mise à jour avec un devicechanged il n'y a pas de raison si ?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script timedifference

Message par Keros »

Dans ce cas là non.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: Script timedifference

Message par dokho »

Tu n'aurais pas par hasard un exemple de script ?

Tu penses que je peux tout mettre dans la même variable (heure, minutes, secondes) ?
Ou il faut une variable pour l'heure, une pour les minutes,...?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script timedifference

Message par Keros »

Je te propose une autre solution plus simple et tu me demandes un exemple de script :mrgreen:

Non je n'ai pas ça sous la main, désolé. Par contre, tu peux directement stocker l'info os.time(). Tu la stockes au début et tu la récupères à la fin. Pense à l'effacer juste après pour éviter un mauvais calcul. Attention également au cas de figure où une deuxième commande On serait envoyée ... C'est le risque d'erreur dont je parlais.

Tu as des infos sur les fonctions Time là : https://www.lua.org/pil/22.1.html
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre