Page 2 sur 3
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 11:50
par marcus_54
je l'avais essayé, mais ce n'est pas ça n'e semble pas fonctionner...

- Capture d'écran 2024-05-22 114527.png (49.24 Kio) Consulté 3439 fois
Je me lance en EzVents
CompteurEAU est le Widget qui à la valeur totale du compteur
ConsommationEau est le Widget qui devait afficher la consommation horaire
eau_actuel et une variable utilisateur de type décimal initialisé à 29.5
Code : Tout sélectionner
return {
on ={
devices = {'CompteurEAU'},
},
logging = {
level = domoticz.LOG_INFO,
marker = 'Conso Eau',
},
execute = function(domoticz, CompteurEAU)
if (CompteurEAU > 'Variable:eau_actuel' ) then
uservariables["eau_actuel"]= CompteurEAU
domoticz.devices('ConsommationEau')=CompteurEAU
end
}
2024-05-22 12:01:20.313 Error: dzVents: Error: (3.1.8) error loading module 'Consommation_Eau' from file '/home/pi/domoticz/scripts/dzVents/generated_scripts/Consommation_Eau.lua':
2024-05-22 12:01:20.313 ...z/scripts/dzVents/generated_scripts/Consommation_Eau.lua:13: syntax error near '='
2024-05-22 12:01:20.500 Error: dzVents: Error: (3.1.8) error loading module 'Consommation_Eau' from file '/home/pi/domoticz/scripts/dzVents/generated_scripts/Consommation_Eau.lua':
2024-05-22 12:01:20.500 ...z/scripts/dzVents/generated_scripts/Consommation_Eau.lua:13: syntax error near '='
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 12:12
par Flying Domotic
C'est peut-être "CompteurEAU" qui devrait être de type compteur. Du coup, pas besoin d'une autre widget, celui d'origine fait très bien l'affaire.
Pour dzVent, il peut être habile de lire d'abord
https://www.domoticz.com/wiki/DzVents:_ ... _scripting
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 12:50
par Keros
Il vaut mieux que tu garde la syntaxe :
Elle sera valable quelque soit ton script et trigger correspondra à l'élément qui le déclenche.
Et comme l'indique Flying Domotic regarde la documentation et aussi les petits guides que j'ai écrit : tu ne peux pas utiliser CompteurEAU pour définir le dispositif ainsi que sa valeur. Il faut ajouter un attribut au dispositifs pour récupérer sa valeur.
Je ne vois pas pourquoi tu cherches à vérifier si la consommation est supérieure ? Si c'est la même, le delta sera de zéro.
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 15:31
par marcus_54
Pour refaire un point :
À travers MQTT je reçois une valeur numérique du relevé du compteur environ toutes les minutes.
Cette valeur est affichée dans un widget idx:1136 appelé CompteurEau qui m'affiche la valeur du compteur d'eau et son évolution au fil du temps. Ce widget est sympa et je le garde.
J'aimerais afficher la consommation par intervalles de temps à l'aide d'un autre widget idx:1137 ConsommationEau
L'idée que j'ai du programme et le suivant :
lire la valeur du widget "CompteurEau"
si la valeur CompteurEau est supérieure à une variable (Eau_actuel) contenant la valeur du compteurEau mémorisé précédemment
alors écrire cette valeur (ou sa différence) dans ConsommationEau
Eau_actuel = CompteurEau
finsi[/code]
Si ce programme est correct il y a plus qu'à le mettre en œuvre en EzEvents
je comprends que vous me disiez d'aller voir la ou les docs et exemples EzEvents, ma finalité n'est pas à d'apprendre un nouveau langage, mais de faire ce foutu compteur.
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 16:07
par marcus_54
ce que j'ai compris y a pas besoin de if puisque le "on" indique qu'il y a un changement d'état de "compteurEau"
Je n'ai pas trop compris comment est-ce qu'on lit ou écrit la valeur d'un widget entre device.domotic.value et compagnie….
Code : Tout sélectionner
return {
on = {devices = {'CompteurEAU'}, },
logging = {
level = domoticz.LOG_INFO,
marker = 'Conso Eau',
},
execute = function(domoticz, trigger)
domoticz.devices('ConsommationEau') = CompteurEAU.value-uservariables["eau_actuel"]
uservariables["eau_actuel"]=CompteurEAU.value
end
}
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 16:24
par marcus_54
Code : Tout sélectionner
return {
on = {devices = {'CompteurEAU'}, },
logging = {
level = domoticz.LOG_INFO,
marker = 'Conso Eau',
},
execute = function(domoticz, trigger)
domoticz.devices('ConsommationEau').value = domoticz.devices('CompteurEAU').value-domoticz.variables('eau_actuel').value
domoticz.variables('eau_actuel').value=domoticz.devices('CompteurEAU').value
end
}
J'ai cette erreur ?
Code : Tout sélectionner
Error: dzVents: Error: (3.1.8) Conso Eau: An error occurred when calling event handler Consommation_Eau
Error: dzVents: Error: (3.1.8) Conso Eau: ...z/scripts/dzVents/generated_scripts/Consommation_Eau.lua:9: attempt to perform arithmetic on a nil value (field 'value')
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 20:10
par Flying Domotic
La bonne syntaxe pour une variable est domoticz.variables('maVariable').set(xxx).
Ceci dit, calculer la différence n'est pas utile, et va même semer la pagaille

Au pire, juste copier la valeur de 'CompteurEau' dans 'ConsommationEau'. Domoticz gère tout seul le calcul par heure/jour/mis/année.
Encore une fois, si on peut changer le type de 'ComteurEau' en 'compteur" (indiqué RFXMeter dans le widget). il n'y aura rien à faire ...
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 20:16
par Keros
Regarde le bas de page de la documentation : pour chaque type de widget, il est indiqué les attributs que tu peux utiliser dessus.
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 20:24
par marcus_54
Encore une fois, si on peut changer le type de 'ComteurEau' en 'compteur" (indiqué RFXMeter dans le widget). il n'y aura rien à faire ...
J'avais déjà mis ce widget…
confirme-moi que j'ai bien pris le bon. (RFXMeter RFXMeter counter 0.030 m3)

- compteur.png (20.4 Kio) Consulté 3399 fois
après avoir relancé l'acquisition de données sur le compteur d'eau, le widget affiche 30 l car l'index du compteur est de 29,53 M3 ☹
je pense que j'avais déjà fait la manipulation et l'index ne changeait pas mais je veux bien retenter l'expérience…
Re: un widget qui affiche le nombre de litres consommés par heure...
Publié : 22 mai 2024, 20:42
par marcus_54
J'ai l'impression que c'est bon
J'ai mis le diviseur à 1
Je vais laisser tourner jusqu'à demain voir ce que ca affiche !
Précédemment j'avais essayé avec des multiplicateurs de 0 1000 et 0,001 et ce n'était pas correct…
Wiki :
Le compteur sera traité avec le diviseur défini dans les paramètres des paramètres de l'application lorsque le réglage du diviseur du compteur est 0. Par exemple, si le compteur est réglé sur "Eau" et que la valeur est passée en litres, le diviseur doit être réglé à 1000. (comme l'unité est m 3 ). Comme le compteur n'accepte que les nombres entiers en entrée, c'est également un moyen d'afficher des valeurs fractionnées. Comme le compteur d'eau envoie des litres (par exemple 12538791), utilisez le diviseur de 1000 pour afficher 12538,791 m3 dans le widget. Si aucun diviseur n'est nécessaire, utilisez la valeur de diviseur 1 (et non 0).