Calcul puissance instantanée : Lua, DZvent ?

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 <\>.
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Calcul puissance instantanée : Lua, DZvent ?

Message 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 :)
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Calcul puissance instantanée : Lua, DZvent ?

Message 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
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Re: Calcul puissance instantanée : Lua, DZvent ?

Message 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é :)
Dernière modification par getget le 07 oct. 2019, 18:39, modifié 1 fois.
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Re: Calcul puissance instantanée : Lua, DZvent ?

Message 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"
}
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Calcul puissance instantanée : Lua, DZvent ?

Message 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)
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Re: Calcul puissance instantanée : Lua, DZvent ?

Message par getget »

Merci ou as tu trouvé les infos sur ce qui est renvoyé par le capteur ?
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Re: Calcul puissance instantanée : Lua, DZvent ?

Message 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)
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Calcul puissance instantanée : Lua, DZvent ?

Message 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*"))
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Re: Calcul puissance instantanée : Lua, DZvent ?

Message 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
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Calcul puissance instantanée : Lua, DZvent ?

Message par denis_brasseur »

Et à quoi ressemble ton compteur incrémental ?
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Répondre