Page 1 sur 1

Valeurs antérieures de Variables

Publié : 05 mars 2019, 09:52
par Cywin
Bonjour à tous,

J'aimerai savoir s'il est possible de récupérer (lire) les anciennes valeurs d'une variable dans domoticz (variable anterieure ou -2, -3...).
J'ai parfois l'impression de bricoler en creant des variables supplementaires pour comparer l'evolution d'une variable pour lancer une alerte...

J'ai par exemple une alerte envoyée sur mon bot telegram si le device texte MeteoFrance Vigilance change d'état. Ou une alerte lorsque mon ip change (merci Papoo) etc... Mais tout cela en passant par des variables intermediaires.
L'idée serait de pouvoir exploiter ces infos, si cela est possible (quantifier une donnée sur 24 heure, par exemple la luminosité Mi Flora etc...)

J'espère que cette question n'a pas déjà été posée.. J'ai cherché en vain!

Merci au moins pour la lecture, et bon scriptage à tous!!!

Stéphane.

Envoyé de mon Redmi Note 3 en utilisant Tapatalk


Re: Valeurs antérieures de Variables

Publié : 05 mars 2019, 19:35
par Chrominator
Valeurs antérieures je ne sais pas.
Mais variable qui change, je sais.

Tu peux initialiser un script LUA nommé "script_variable_xxx.lua" qui sera déclenché à chaque fois qu'une variable change.
Dedans tu pourras tester si la variable qui t'intéresse a changé avec quelque chose du genre

Code : Tout sélectionner

if uservariablechanged["xxxx"] then ...
Peut-être que ceci t'aidera.

Re: Valeurs antérieures de Variables

Publié : 06 mars 2019, 06:33
par Cywin
Merci beaucoup je vais creuser. Actuellement, quand une variable est mise à jour mais identique, elle est considérée comme changeante. D'ou la comparaison avec une valeur historique en passant par une seconde variable. Mais peut etre que la fonction que tu m'indique résoudra ce probleme, je ne devais pas utiliser la bonnne, je vais reviser mes fonctions!

Sinon, pour la moyenne sur une plage de donnée d'une variable, j'ai trouvé ça:

-- humidité moyenne function humMoy(device) local monthLog = assert(io.popen(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?range=month&sensor=temp&type=graph&idx='..otherdevices_idx[device]..'"')) local list = monthLog:read('*all') monthLog:close() local data = ReverseTable(json:decode(list).result) return(round(data[1].hu)) end

Donc on est capable a priori de revenir sur des valeurs historiques, mais en json. Jusque là je ne me suis attaqué qu'à du Lua... Doucement mais sûrement.. À suivre...

Envoyé de mon Redmi Note 3 en utilisant Tapatalk


Re: Valeurs antérieures de Variables

Publié : 06 mars 2019, 08:39
par ogulf
Pour voir comment fonctionne le JSON, essaye directement l'url dans un navigateur et tu verras !

Le principe est de récupérer une valeur retournée (.hu)

Sinon pour stocker l'ancienne "vraie" valeur d'une variable, tu peux utiliser le modules.lua de vil1driver (cf sa signature) et utiliser la fonction "devicechanged".

Re: Valeurs antérieures de Variables

Publié : 06 mars 2019, 09:11
par Tonio16
ogulf a écrit : 06 mars 2019, 08:39 Sinon pour stocker l'ancienne "vraie" valeur d'une variable, tu peux utiliser le modules.lua de vil1driver (cf sa signature) et utiliser la fonction "devicechanged".
Et dans le cas d'un script python ? Est-ce qu'une variable interne au script est remise à "zéro" à la fin du script ?

Je vais bientôt me lancer dans un script modbus pour écrire depuis Domoticz vers ma VMC.
Autant la lecture me semble assez simple, autant l'écriture, je ne vois pas trop comment faire pour gérer proprement la chose.

Antoine

Re: Valeurs antérieures de Variables

Publié : 06 mars 2019, 18:20
par ogulf
Si tu veux gérer des variables qui perdurent au delà du script (que ce soit du Pyton, du shell ou autres), tu peux utiliser soit les variables d'environnement, soit les écrire dans un fichier de paramétrage (qu'il te faudra lire donc).