Page 3 sur 4

Re: probleme conso virtuel

Publié : 16 janv. 2016, 19:16
par alexbi
exact tu peux l'enlever je l'avais mit dans le doute ... mais normalement il n'y en pas pas besoin

Re: probleme conso virtuel

Publié : 16 janv. 2016, 19:46
par vil1driver
npower (conso instantanée) n'est utile que si le compteur est alimenté par plusieurs scripts..

ici je chauffe 3 pièces par domoticz et je n'utilise qu'un compteur global chauffage.

donc avant d'envoyer au compteur la puissance d'un chauffage il faut savoir si d'autre n'envoie pas déjà une valeur..
pas facile d'expliquer :D

Re: probleme conso virtuel

Publié : 17 janv. 2016, 19:33
par thier
Bonsoir,
Je débute en programmation Lua et je me casse le nez sur ce script. J'ai programmé mes radiateurs et je tente de mettre en place un suivi de la consommation en modifiant le script de départ pour un seul radiateur. Domoticz me retourne le message de défaut suivant "lua:30: attempt to perform arithmetic on a nil value".
A priori j'ai un problème avec la ligne "energy1 = tonumber(energy1) + (puissance1 / 60)".

Re: probleme conso virtuel

Publié : 18 janv. 2016, 00:15
par alexbi
essaye déjà un reboot si tu as tout bien fait

si ca marche pas fait un copier collé de ton script

verifie : les IDX de tes dummy conso (instant+cumul), évite les espaces dans les noms utilise plutôt _

Re: probleme conso virtuel

Publié : 18 janv. 2016, 10:03
par AlexElectro
Après un week-end d'essais, petit retour d'expérience: tout fonctionne grâce à vil1driver et alexbi

après avoir créé le compteur et adapté le script , faire un reboot

voici le script que j'utilise, et qui fonctionne:

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 radiateur envoyée:'..energy1..' kw')
             
    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 radiateur nulle')
   end
  

return commandArray
a enregistrer en script_time_xxxxx.lua

Re: probleme conso virtuel

Publié : 18 janv. 2016, 10:31
par alexbi
content que ça fonctionne :P

Re: probleme conso virtuel

Publié : 18 janv. 2016, 12:56
par thier
je re-test ce soir et je vous tient au courant.

Re: probleme conso virtuel

Publié : 18 janv. 2016, 18:11
par thier
je viens de tester avec le script d'AlexElectro et j'ai toujours le problème malgré un reboot :
lua:17: attempt to perform arithmetic on a nil value
la ligne qui ne passe pas n°17: energy1 = tonumber(energy1) + (puissance1 / 60)

local radiateursalon = 'radiateur salon' -- Nom de l'interrupteur virtuel de marche du chauffage
local puissance1 = 1500 -- puissance du chauffage en watt
local conso1 = 'conso_chauffage_salon' -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id1 = 129 -- 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)
npower1 = tonumber(npower1)
commandArray[1]={['UpdateDevice'] = conso_id1 .. '|0|' .. puissance1 .. ';' .. energy1}
--print('Conso radiateur envoyée:'..energy1..' kw')

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}
--print('Conso radiateur nulle')
end
return commandArray

Re: probleme conso virtuel

Publié : 18 janv. 2016, 18:20
par AlexElectro
essaye ce script:

Code : Tout sélectionner

commandArray = {}
print('conso: '..otherdevices_svalues['conso_chauffage_salon'])
print('########## string.match avec parametres')
npower1, energy1 = string.match(otherdevices_svalues['conso_chauffage_salon'], "(%d+%.*%d*);(%d+%.*%d*)")

print('energy1='..energy1)    
print('npower1='..npower1) 

energy1 = tonumber(energy1)
npower1 = tonumber(npower1)
print('tonumber energy1='..energy1)    
print('tonumber npower1='..npower1) 


return commandArray
et fais un copier/coller des lignes du log

Re: probleme conso virtuel

Publié : 18 janv. 2016, 18:22
par alexbi
Nom du script ? Tu as bien mis script_time_xxxxx.lua dans le bon dossier ou via events