Incrémenter un compteur virtuel de consommation
Publié : 06 déc. 2021, 22:53
Bonjour, j'avais adapté il y a quelques temps un script que j'avais trouvé ici. Ce script permet de calculer la consommation de mes radiateurs. A cette consommation, je voudrais à présent additionner la consommation de mon chauffe-eau. Je n'arrive pas à trouver comment ajouter cette consommation. La notion de table me perturbe et je n'arrive pas à incrémenter la consommation d'un appareil qui ne commence pas par "radiateur". J'ai donc essayé de déclarer des noms (local CE, local wattCE ...) mais je ne sais pas comment faire calculer la consommation du chauffe-eau et surtout l'additionner à celles des autres radiateurs.
Code : Tout sélectionner
--[[
Type: time
Name: Consommation chauffage
NOTA : Ce script est volontairement tres verbeux afin d'avoir dans les logs le statut de chaque radiateur
(toutes les minutes !). On peut l eviter en initialisant la variable 'verbose' a false.
Sinon, il est fortement conseille de commenter l option log de domoticz (dans domoticz.sh) afin de ne pas
saturer l espace de stockage par un fichier log trop important
--]]
----------------------------------------------
------ Configuration ------
----------------------------------------------
local piece={} -- Tableau Rajouter ici les radiateurs
piece['0']='chambre enfants'
piece['1']='chambre parents'
piece['2']='salon'
piece['3']='cuisine'
piece['4']='entree'
piece['5']='SdB'
local CE='Chauffe eau' -- Switch chauffe eau
local watt={} -- Tableau Rajouter ici la puissance en watts du radiateur (L'index doit correspondre a celui de la piece ci-dessus)
watt['0']='1500'
watt['1']='1250'
watt['2']='1000'
watt['3']='1500'
watt['4']='500'
watt['5']='1000'
local wattCE='3000' -- Puissance chauffe eau
local conso = 'Conso chauffage' -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id = 37 -- idx du capteur virtuel de consommation électrique
local reset = false -- force la mise à zero de la consommation instantanée (laisser à false pour un fonctionnement normal) true/false
local hysteresis = 0.4 -- Valeur seuil pour éviter que le relais ne cesse de commuter dans les 2 sens
local debugging = false -- true or false pour voir tous les messages debug dans le log
local verbose = false -- Print ou non des logs
-- domoticz
local url = 'xxxxx:yyyyy@192.168.1.10:8080' -- user:pass@ip:port de domoticz, pour la création des variables
local status = 0
local cumul_power = 0 -- initialisation de la puissance instantanee des radiateurs en fonctionnement
----------------------------------------------
-- Fin de la partie configuration --
----------------------------------------------
function timedifference(d)
s = otherdevices_lastupdate[d]
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
commandArray = {}
for key, valeur in pairs(piece) do
-- Maj des variables en fonction de la valeur de la table
local le_radiateur_est_sur_ON = false -- Etat du radiateur false ou true
local radiateur = string.format("%s%s", "Radiateur ", valeur) -- Nom de l'interrupteur de chauffage
log1 = '***'
log2 = '***'
local heure = string.sub(os.date("%X"), 1, 5) -- Recuperation de l'heure du systeme
puissance=tonumber(watt[key]) -- Puissance en watt du radiateur
puissanceCE=tonumber(wattCE) -- Puissance en watt du chauffe eau
if (debugging) then print ('>>>>>>>>>>>>>>>Initialisation '..puissance..' Radiateur>'..valeur) end
----------------------------------------------
-- Inititialisation des Variables d etat --
----------------------------------------------
if (otherdevices[radiateur] == 'On') then le_radiateur_est_sur_ON = true end
----------------------------------------------------
------ Calcul de la consommation ------
------ de l'ensemble des radiateurs ------
----------------------------------------------------
if (le_radiateur_est_sur_ON) then
log1 = '*** IF 1 > Le Radiateur est en marche'
status = 1
else
log1 = '*** IF 3 > Le Radiateur est arrete'
status = 0
end
-- calcul de la conso (npower = puissance actuelle / energy = puissance cumulee)
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)") -- extraction des valeurs stockees dans le device conso
if (status == 1) then -- le radiateur est allume
cumul_power = tonumber(cumul_power + puissance)
energy = tonumber(energy + (puissance / 60)) -- puissance journaliere cumulee
else -- Le radiateur est eteint
energy = tonumber(energy)
end
power = tonumber(cumul_power) -- puissance instantanee
-- envoi de la conso dans le capteur virtuel d'énergie
if (reset) then
power = 0
energy = 0
end
commandArray[#commandArray + 1]={['UpdateDevice'] = conso_id .. '|0|' .. power .. ';' .. energy}
end -- fin de tableau
return commandArray