[LUA] Consommation virtuelle

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

[LUA] Consommation virtuelle

Message par vil1driver »

Salut,

je vous partage ici un petit script qui à pour but de remplir un compteur de consommation virtuel

Image

quel que soit l'équipement à suivre et la façon dont il est utilisé (manuellement, plannings, scripts, etc..)

il vous suffit de créer le(s) compteur(s) virtuel(s) depuis le matériel virtuel (dummy)
puis de renseigner le tableau en début de script en indiquant
le nom du dispositif à surveiller, sa puissance en watt et le nom du compteur associé.
surveillez autant de dispositifs que vous le souhaitez.. chaqun devant avoir son propre compteur.

Code : Tout sélectionner

-- mesures virtuelles de consommation électrique
-- script de type DEVICE

-- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940)
dofile('/home/pi/domoticz/scripts/lua/modules.lua')

debug = false  -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir

local devices = {}

-- tableau a renseigner {'dispositif', puissance, 'compteur'}

devices[1] = {'radiateur thomas', 900, 'conso thomas'}
devices[2] = {'radiateur SDB', 1200, 'conso SDB'}
devices[3] = {'radiateur salon', 3200, 'conso salon'}
devices[4] = {'radiateur parents', 800, 'conso parents'}
-- etc..

-- fin du tableau

commandArray = {} 

for n,device in pairs(devices) do
   if stateChange(device[1]) == 'On' then
      -- affichage puissance instantanée
      power, energy = string.match(otherdevices_svalues[device[3]], "(%d+%.*%d*);(%d+%.*%d*)")
      commandArray['UpdateDevice'] = otherdevices_idx[device[3]] .. '|0|' .. device[2] .. ';' .. energy
      break
   end
   if stateChange(device[1]) == 'Off' then
      log(device[1]..' est resté allumé '..duree..'s',debug)
      -- calcule puissance consommée
      power, energy = string.match(otherdevices_svalues[device[3]], "(%d+%.*%d*);(%d+%.*%d*)")
      energy = tonumber(energy + (device[2] / 3600 * duree))
      commandArray['UpdateDevice'] = otherdevices_idx[device[3]] .. '|0|0;' .. energy
      break
   end
end   

return commandArray
Image
Dernière modification par vil1driver le 30 oct. 2017, 12:23, modifié 5 fois.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

Bonjour,

Très intéressant mais je suis vraiment nul en script.

Ce script calcule la totalité de plusieurs chauffages si j'ai bien compris ?

Est il possible de faire un script par chauffage pour avoir une consommation par chauffage ?

Merci beaucoup !
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Consommation virtuelle

Message par vil1driver »

ce script s'occupe d'autant d'appareils que tu veux mais ne fait pas le cumule.
c'est un compteur par appareil ;)

utilisable pour n'importe quel appareil.. la cafetière, la vmc, la pompe de la piscine, etc.. pas seulement des radiateurs ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: Consommation virtuelle

Message par jackslayter »

la variable "duree" tu la prends ou?
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Consommation virtuelle

Message par vil1driver »

viewtopic.php?f=17&t=3861&p=43248#p43248

elle est générée par la fonction stateChange utilisée dans ce script.

à condition d'avoir une version de modules.lua à jour (de ce jour), j'avais oublié de le préciser, désolé.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

vil1driver a écrit :ce script s'occupe d'autant d'appareils que tu veux mais ne fait pas le cumule.
c'est un compteur par appareil ;)

utilisable pour n'importe quel appareil.. la cafetière, la vmc, la pompe de la piscine, etc.. pas seulement des radiateurs ;)
D'accord Merci beaucoup ! je vais tester chez moi ;)
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

vil1driver a écrit :viewtopic.php?f=17&t=3861&p=43248#p43248

elle est générée par la fonction stateChange utilisée dans ce script.

à condition d'avoir une version de modules.lua à jour (de ce jour), j'avais oublié de le préciser, désolé.
Désolé , je n'ai pas trop compris comment mettre la version de modules.lua ... as tu un lien qui explique la mise en version de modules.lua ?

Merci beaucoup !
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

foudepc83 a écrit :
vil1driver a écrit :viewtopic.php?f=17&t=3861&p=43248#p43248

elle est générée par la fonction stateChange utilisée dans ce script.

à condition d'avoir une version de modules.lua à jour (de ce jour), j'avais oublié de le préciser, désolé.
Désolé , je n'ai pas trop compris comment mettre la version de modules.lua ... as tu un lien qui explique la mise en version de modules.lua ?

Merci beaucoup !
Pardon , je viens de remarqué que tu a rajouté le lien dans le script. Autant pour moi
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

J'ai mis à jour le module.lua comme indiqué dans ton tutoriel,
J'ai plus d'erreur dans les logs,

Par contre je vois cela :

Code : Tout sélectionner

dzVents: stateChange : création variable manquante lastState_Chauffage Cuisine
2017-10-30 12:50:17.012 (Chauffages) Light/Switch (Chauffage Chambre)
2017-10-30 12:50:17.055 User: Admin initiated a switch command (163/Rad Chambre/Set Level)
2017-10-30 12:50:17.055 OpenZWave: Domoticz has send a Switch command!, Level: 0, NodeID: 3 (0x03)
2017-10-30 12:50:17.293 dzVents: stateChange : création variable manquante lastState_Chauffage Cuisine
2017-10-30 12:50:17.305 dzVents: stateChange : création variable manquante lastState_Chauffage Cuisine
2017-10-30 12:50:22.279 dzVents: stateChange : création variable manquante lastState_Chauffage Cuisine
2017-10-30 12:50:22.291 dzVents: stateChange : création variable manquante lastState_Chauffage Cuisine

Les variables :

Code : Tout sélectionner

-- tableau a renseigner {'dispositif', puissance, 'compteur'}

devices[1] = {'Chauffage Cuisine', 2000, 'Consommation Chauffage Cuisine'}
-- etc..

-- fin du tableau
Chauffage Cuisine est un selecteur ( Fil pilote Zwave )
Consommation Chauffage Cuisine est un compteur Electrique.

J'utilise également un script qui permet de maintenir la température : viewtopic.php?f=17&t=2728

Le compteur ne tourne pas , j'ai raté quelque chose ?

Merci beaucoup !
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

Re: Consommation virtuelle

Message par rapinou »

A priori le problème vient du fait que ton interrupteur est un sélecteur, donc avec des niveaux (10, 20, etc), alors que le script cherche un changement d'état à "On" ou "Off".

Si tu remplaces dans le script : "On" par le niveau du sélecteur correspondant (par ex: 10), ça dit quoi ?
Si ça fonctionne, tu perdra cependant le côté universel du script, il ne fonctionnera plus pour des appareils reliés à des interrupteurs On/Off.
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
Répondre