Page 1 sur 2
Calcul puissance instantanée : Lua, DZvent ?
Publié : 07 oct. 2019, 02:22
par getget
Bonjour, je souhaiterai faire un script qui m’alimente un compteur d’énergie instantanée (en kw donc) à partir des données d'un compteur incrémental (en kwh), en faisant "(Nouvelle valeur - ancienne)/temps entre les 2"
Comment faire ça simplement ?
Merci

Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 07 oct. 2019, 05:52
par denis_brasseur
Je créerais d'abord une variable ancienne_valeur_energie_instantanee.
En LUA, un événement type device :
A chaque changement de la valeur énergie instantanée :
- tu effectue un calcul (nouvelle valeur (celle du device qui vient de changer) - ancienne valeur (celle stocké dans la variable) / temps entre les 2 (time courant - heures de changement de la variable)
- tu met à jour la variable avec la nouvelle valeur
Quelque chose comme ceci :
Code : Tout sélectionner
--valeur en seconde
-a diviser par 60 pour l'obtenir en minute
-à diviser par 3600 pour l'avoir en heure
function lastUpdate(device)
--timestamp = otherdevices_lastupdate[device] or device
timestamp = otherdevices_lastupdate[device] or uservariables_lastupdate[device] or device
y, m, d, H, M, S = timestamp:match("(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)")
difference = os.difftime(os.time(), os.time{year=y, month=m, day=d, hour=H, min=M, sec=S})
return difference
end
if (devicechanged['compteur_incrementiel']) then
energie_instantanee = otherdevices_svalues['compteur_incrementiel'] --valeur de ton compteur incrémental (en kwh)
ex_energie_instantanee = uservariables['ex_energie_instantanee'] --valeur de ton ancienne mesure depuis la variable
difference = lastUpdate(uservariables['ex_energie_instantanee']) --temps entre maintenant et la valeur précédente
energie_instantanee = (energie_instantanee - ex_energie_instantanee) / difference
commandArray[#commandArray + 1] = {['Variable:ex_energie_instantanee'] = energie_instantanee} --mise a jour de la variable
--
--mise à jour de ton compteur d’énergie instantanée
--
end
A adapter à ta situation
Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 07 oct. 2019, 07:24
par getget
Merci beaucoup
En fait la nuit a portée conseil. C'est encore plus simple (peut être). Le compteur étant incremental il envoie directement la différence justement.
Si j'arrive à l'intercepter c'est gagné

Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 07 oct. 2019, 18:39
par getget
Comment je peux savoir si la valeur otherdevices_svalues['compteur_incrementiel'] renvoie la valeur du compteur TOTAL ou la valeur incrémentée ?
J'ai affiché la valeur il marque "12"
Nulle part je vois de 12 ....
Code : Tout sélectionner
{
"ActTime" : 1570465987,
"AstrTwilightEnd" : "21:05",
"AstrTwilightStart" : "06:16",
"CivTwilightEnd" : "19:52",
"CivTwilightStart" : "07:29",
"DayLength" : "11:20",
"NautTwilightEnd" : "20:28",
"NautTwilightStart" : "06:53",
"ServerTime" : "2019-10-07 18:33:07",
"SunAtSouth" : "13:41",
"Sunrise" : "08:01",
"Sunset" : "19:20",
"app_version" : "4.10726",
"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 2000.0,
"BatteryLevel" : 255,
"Counter" : "14.018 kWh",
"CounterToday" : "0.006 kWh",
"CustomImage" : 0,
"Data" : "14.018 kWh",
"Description" : "",
"Favorite" : 0,
"HardwareID" : 3,
"HardwareName" : "Modules Wifi",
"HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
"HardwareTypeVal" : 15,
"HaveTimeout" : false,
"ID" : "82200",
"LastUpdate" : "2019-10-07 18:33:06",
"Name" : "ZOE",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" : [ 0 ],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : 9,
"SubType" : "Counter Incremental",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "General",
"TypeImg" : "counter",
"Unit" : 1,
"Used" : 1,
"ValueQuantity" : "",
"ValueUnits" : "",
"XOffset" : "0",
"YOffset" : "0",
"idx" : "200"
}
],
"status" : "OK",
"title" : "Devices"
}
Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 07 oct. 2019, 19:23
par denis_brasseur
getget a écrit : 07 oct. 2019, 18:39
Comment je peux savoir si la valeur otherdevices_svalues['compteur_incrementiel'] renvoie la valeur du compteur TOTAL ou la valeur incrémentée ?
Les 2 mon capitaine
Code : Tout sélectionner
p1, p2 = string.match(otherdevices_svalues['compteur_incrementiel'], '(%d+.%d*);(%d+.%d*)')
print(p1..'-'..p2)
Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 07 oct. 2019, 20:46
par getget
Merci ou as tu trouvé les infos sur ce qui est renvoyé par le capteur ?
Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 07 oct. 2019, 22:16
par getget
Je crois bien qu'il n' a qu'une valeur ...
2019-10-07 22:15:44.729 Error: EventSystem: in Script #1: [string "--..."]:32: attempt to concatenate global 'p2' (a nil value)
Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 08 oct. 2019, 05:40
par denis_brasseur
getget a écrit : 07 oct. 2019, 20:46
Merci ou as tu trouvé les infos sur ce qui est renvoyé par le capteur ?
Ici =>
Capturing Energy Usage with Lua Scripts
Le script ~ / domoticz / scripts / lua / script_device_owl_log.lua est activé chaque fois que le compteur d’énergie Owl transmet un nouvel ensemble de lectures actuelles.
Les scripts lisent l’ancienne énergie cumulative de chacun des 5 canaux des compteurs d’énergie factices.
Les courants du dispositif Owl sont ensuite convertis en puissance instantanée en multipliant par la tension fixe et le temps écoulé depuis la dernière mise à jour est également renvoyé. En multipliant le temps écoulé depuis la dernière mise à jour par la puissance instantanée, on obtient l'énergie utilisée depuis la dernière accumulation. L'énergie totale peut maintenant être calculée en ajoutant la nouvelle énergie à l'ancienne. La puissance instantanée et l'énergie cumulative sont ensuite renvoyées à Domoticz.
Tu peux également essayer ceci
Code : Tout sélectionner
print(string.match(otherdevices_svalues['compteur_incrementiel'], "%d+%.*%d*"))
Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 08 oct. 2019, 10:06
par getget
J'ai bien un soucis. Le compteur incrémental ne renvoie pas les mêmes valeurs. Il ne me renvoie qu'une valeur ... et je ne sais pas ce qu'elle signifie. Il ne se comporte pas comme les autres compteurs d'énergie
print(string.match(otherdevices_svalues['compteur_incrementiel'], "%d+%.*%d*")) renvoie :
2019-10-08 10:04:45.165 Status: LUA: 6
Re: Calcul puissance instantanée : Lua, DZvent ?
Publié : 08 oct. 2019, 18:21
par denis_brasseur
Et à quoi ressemble ton compteur incrémental ?