probleme conso virtuel

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

probleme conso virtuel

Message par alexbi »

bonjour

j'ai tenté de faire fonctionner 3 dummy 'conso instant + cumul'. J'ai regardé pas mal de tutos sur le forum il me semble que j'ai fais ce qu'il fallait ... sauf que cela ne fonctionne pas OU fonctionne une fois de temps en temps.

je vous met donc mon code LUA pour comprendre mon erreur ... Merci d'avance pour votre aide

Code : Tout sélectionner

---------- test consommation virtuel -------


-- radiateur

local radiateurSalon = 'radiateur salon'       -- Nom de l'interrupteur de chauffage
local puissance1 = 1000                  -- puissance du chauffage en watt
local conso1 = 'radiateur salon conso'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id1 = 121                  -- idx du capteur virtuel de consommation électrique

local radiateurCuisine = 'radiateur cuisine'       -- Nom de l'interrupteur de chauffage
local puissance2 = 700                  -- puissance du chauffage en watt
local conso2 = 'radiateur cuisine conso'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id2 = 122                  -- idx du capteur virtuel de consommation électrique

local radiateurChambre = 'radiateur chambre'       -- Nom de l'interrupteur de chauffage
local puissance3 = 500                  -- puissance du chauffage en watt
local conso3 = 'radiateur chambre conso'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id3 = 123                  -- idx du capteur virtuel de consommation électrique


commandArray = {}
 
if (otherdevices[radiateurSalon] == 'On') then 
 
  -- envoie de la conso dans le capteur virtuel d'énergie
      npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
      energy1 = tonumber(energy1) + (puissance1 / 60)    
      commandArray['UpdateDevice'] = conso_id1 .. '|0|' .. puissance1 .. ';' .. energy1   
      
             
    else
      
        
      -- envoie de la conso dans le capteur virtuel d'énergie
      npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
      energy1 = tonumber(energy1)
      commandArray['UpdateDevice'] = conso_id1 .. '|0|' .. 0 .. ';' .. energy1   
      
   end
   

if (otherdevices[radiateurCuisine] == 'On') then 
 
  -- envoie de la conso dans le capteur virtuel d'énergie
      npower2, energy2 = string.match(otherdevices_svalues[conso2], "(%d+%.*%d*);(%d+%.*%d*)")
      energy2 = tonumber(energy2) + (puissance2 / 60)    
      commandArray['UpdateDevice'] = conso_id2 .. '|0|' .. puissance2 .. ';' .. energy2  
      
             
    else
      
        
      -- envoie de la conso dans le capteur virtuel d'énergie
      npower2, energy2 = string.match(otherdevices_svalues[conso2], "(%d+%.*%d*);(%d+%.*%d*)")
      energy2 = tonumber(energy2)
      commandArray['UpdateDevice'] = conso_id2 .. '|0|' .. 0 .. ';' .. energy2   
      
   end
   
if (otherdevices[radiateurChambre] == 'On') then 
 
  -- envoie de la conso dans le capteur virtuel d'énergie
      npower3, energy3 = string.match(otherdevices_svalues[conso3], "(%d+%.*%d*);(%d+%.*%d*)")
      energy3 = tonumber(energy3) + (puissance3 / 60)    
      commandArray['UpdateDevice'] = conso_id3 .. '|0|' .. puissance3 .. ';' .. energy3  
      
             
    else
      
        
      -- envoie de la conso dans le capteur virtuel d'énergie
      npower3, energy3 = string.match(otherdevices_svalues[conso3], "(%d+%.*%d*);(%d+%.*%d*)")
      energy3 = tonumber(energy3)
      commandArray['UpdateDevice'] = conso_id3 .. '|0|' .. 0 .. ';' .. energy3   
      
   end
return commandArray
Image


il doit y avoir une erreur quelque part car les infos ne semblent pas être envoyer a mes conso virtuel

Image


je précise que depuis les heures indiquées sur les capteurs de conso virtuel, les radiateurs se sont mis a en fonctionnement plusieurs fois !
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

Salut,

Essai avec un seul radiateur pour voir..

Un peu de lecture pour comprendre
send the same command type multiple times:
https://www.domoticz.com/wiki/Events
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
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

Re: probleme conso virtuel

Message par alexbi »

oui j'ai vu cette page :

Updating Energy Usage with Lua
The simplest method is purely to send the current power and the cumulative energy via commandArray['UpdateDevice'], but only 1 value per script can be sent this way:

commandArray['UpdateDevice'] = id .. "|0|" .. power .. ";" .. energy

Since version 1.700 of Domoticz it has been possible to send multiple updates via this route:

commandArray[1] = {['UpdateDevice'] = houseid .. "|0|" .. housepower .. ";" .. houseenergy}
commandArray[2] = {['UpdateDevice'] = pumpid .. "|0|" .. pumppower .. ";" .. pumpenergy}
commandArray[3] = {['UpdateDevice'] = solarid .. "|0|" .. solarpower .. ";" .. solarenergy}
See the Events page for the full context.

For simpler meter then the command is:

commandArray[4] = {['UpdateDevice'] = exportedid .. "|0|" .. exportenergy}

au début je ne comprenais pas très bien c'est donc parce que je demande le même type de commande 'updatedevice' que je dois utiliser le commandarray [1],[2],[3], ...

merci a toi pour ton retour, tout fonctionne maintenant
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

alexbi a écrit :au début je ne comprenais pas très bien c'est donc parce que je demande le même type de commande 'updatedevice' que je dois utiliser le commandarray [1],[2],[3], ...
exactement,

pas de quoi ;)
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
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

Bonsoir
je ne comprend pas bien ce qu'il faut modifier au final. J'utilise le code suivant:

Code : Tout sélectionner

---------- test consommation virtuel -------


-- radiateur

local radiateur = 'Radiateur Evrard'       -- Nom de l'interrupteur de chauffage
local puissance1 = 1000                  -- puissance du chauffage en watt
local conso1 = 'Conso Evrard'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id1 = 50                  -- idx du capteur virtuel de consommation électrique




commandArray = {}
 
if (otherdevices[radiateur] == 'On') then 
 
  -- envoie de la conso dans le capteur virtuel d'énergie
      npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
      energy1 = tonumber(energy1) + (puissance1 / 60)    
      commandArray['UpdateDevice'] = conso_id1 .. '|0|' .. puissance1 .. ';' .. energy1   
      
             
    else
      
        
      -- envoie de la conso dans le capteur virtuel d'énergie
      npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
      energy1 = tonumber(energy1)
      commandArray['UpdateDevice'] = conso_id1 .. '|0|' .. 0 .. ';' .. energy1   
      
   end
   

return commandArray
mais dans le log j'ai l'erreur:

Code : Tout sélectionner

Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_conso.lua:28: bad argument #1 to 'match' (string expected, got nil)
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

mince j'ai cliqué "envoyer" trot tôt :oops:

pour finir, je n'arrive pas à comprendre cette ligne de commande:

Code : Tout sélectionner

npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
pas facile de débuter en LUA :geek:
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

Re: probleme conso virtuel

Message par alexbi »

salut

lol ca va je suis pas le seul a la ramasse

l'explication est plutôt simple !

tu as prit la mauvaise base pour faire simple, c'est a dire que tu as copié collé mon script qui ne FONCTIONNE PAS !

si tu regarde les réponses en dessous tu verra qu'il faut modifier les CommandArray !!!

pour t'éviter de te prendre trop la tete regarde ce script et LA tu peux t'en inspirer car il est fonctionnel !!!

Code : Tout sélectionner

---------- consommation virtuel radiateur  -------


-- radiateur

local radiateurSalon = 'radiateur salon'       -- Nom de l'interrupteur de chauffage
local puissance1 = 1000               -- puissance du chauffage en watt
local conso1 = 'radiateur_salon_conso'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id1 = 130                  -- idx du capteur virtuel de consommation électrique

local radiateurChambre = 'radiateur chambre'       -- Nom de l'interrupteur de chauffage
local puissance2 = 500               -- puissance du chauffage en watt
local conso2 = 'radiateur_chambre_conso'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id2 = 132                  -- idx du capteur virtuel de consommation électrique

local radiateurCuisine = 'radiateur cuisine'       -- Nom de l'interrupteur de chauffage
local puissance3 = 700               -- puissance du chauffage en watt
local conso3 = 'radiateur_cuisine_conso'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id3 = 131                  -- idx du capteur virtuel de consommation électrique

commandArray = {}


------- salon --------- 

if (otherdevices[radiateurSalon] == 'On') then
-- envoie de la conso dans le capteur virtuel d'énergie
npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
energy1 = tonumber(energy1) + (puissance1 / 60)
npower1 = tonumber(npower1)
commandArray[1]={['UpdateDevice'] = conso_id1 .. '|0|' .. puissance1 .. ';' .. energy1}

end

if (otherdevices[radiateurSalon] == 'Off') then 
-- envoie de la conso dans le capteur virtuel d'énergie
npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
energy1 = tonumber(energy1)
npower1 = tonumber(npower1)
commandArray[2]={['UpdateDevice'] = conso_id1 .. '|0|' .. 0 .. ';' .. energy1}

end  



------- Chambre --------

if (otherdevices[radiateurChambre] == 'On') then
-- envoie de la conso dans le capteur virtuel d'énergie
npower2, energy2 = string.match(otherdevices_svalues[conso2], "(%d+%.*%d*);(%d+%.*%d*)")
energy2 = tonumber(energy2) + (puissance2 / 60)
npower2 = tonumber(npower2)
commandArray[3]={['UpdateDevice'] = conso_id2 .. '|0|' .. puissance2 .. ';' .. energy2}

end

if (otherdevices[radiateurChambre] == 'Off') then 
-- envoie de la conso dans le capteur virtuel d'énergie
npower2, energy2 = string.match(otherdevices_svalues[conso2], "(%d+%.*%d*);(%d+%.*%d*)")
energy2 = tonumber(energy2)
npower2 = tonumber(npower2)
commandArray[4]={['UpdateDevice'] = conso_id2 .. '|0|' .. 0 .. ';' .. energy2}

end  



------- Cuisine --------

if (otherdevices[radiateurCuisine] == 'On') then
-- envoie de la conso dans le capteur virtuel d'énergie
npower3, energy3 = string.match(otherdevices_svalues[conso3], "(%d+%.*%d*);(%d+%.*%d*)")
energy3 = tonumber(energy3) + (puissance3 / 60)
npower3 = tonumber(npower3)
commandArray[5]={['UpdateDevice'] = conso_id3 .. '|0|' .. puissance3 .. ';' .. energy3}

end

if (otherdevices[radiateurCuisine] == 'Off') then 
-- envoie de la conso dans le capteur virtuel d'énergie
npower3, energy3 = string.match(otherdevices_svalues[conso3], "(%d+%.*%d*);(%d+%.*%d*)")
energy3 = tonumber(energy3)
npower3 = tonumber(npower3)
commandArray[6]={['UpdateDevice'] = conso_id3 .. '|0|' .. 0 .. ';' .. energy3}

end  

return commandArray
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

@AlexElectro,

Je pense que tu n'as pas créé le bon compteur tout simplement.

Les modifications apportées au code d'alexbi ne te concernent pas car tu n'utilises qu'un compteur.
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
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

@Alexbi:

j'ai fait les modifications suivante:

Code : Tout sélectionner

---------- test consommation virtuel -------


-- radiateur

local radiateur = 'Radiateur Evrard'       -- Nom de l'interrupteur de chauffage
local puissance1 = 1000                  -- puissance du chauffage en watt
local conso1 = 'Conso Evrard'            -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id1 = 50                  -- idx du capteur virtuel de consommation électrique




commandArray = {}
 
if (otherdevices[radiateur] == 'On') then 
 
  -- envoie de la conso dans le capteur virtuel d'énergie
      npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
	  energy1 = tonumber(energy1) + (puissance1 / 60)    
      npower1 = tonumber(npower1)
	  commandArray[1]={['UpdateDevice'] = conso_id1 .. '|0|' .. puissance1 .. ';' .. energy1} 
      print('Conso Evrard envoyée')
             
    end
      
if (otherdevices[radiateur] == 'Off') then 
      -- envoie de la conso dans le capteur virtuel d'énergie
      npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
      energy1 = tonumber(energy1)
      npower1 = tonumber(npower1)
	  commandArray[2]={['UpdateDevice'] = conso_id1 .. '|0|' .. 0 .. ';' .. energy1} 
      print('Conso Evrard nulle')
   end
  

return commandArray
et j'ai toujours l'erreur:

Code : Tout sélectionner

Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_conso.lua:29: bad argument #1 to 'match' (string expected, got nil)
pas facile cette histoire!! :oops:

@vil1driver
quel compteur j'aurais du mettre? tu peux être un peu plus précis stp?
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

Bien c'est spécifié, instant + compteur, c'est ce que tu as créés ?
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
Répondre