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

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

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