113 lines
4.3 KiB
Lua
Executable File
113 lines
4.3 KiB
Lua
Executable File
-- script domoticz/scripts/lua/script_device_compteurHC-HP.lua
|
|
|
|
-- Initialisation des variables locales
|
|
local capteurGlobal = uservariables['Capteur électricité']
|
|
local capteurCptHP = uservariables['ConsoCapteurHP']
|
|
local capteurCptHC = uservariables['ConsoCapteurHC']
|
|
local idxCptHP = uservariables['IdxCptHP']
|
|
local idxCptHC = uservariables['IdxCptHC']
|
|
local flagHC = uservariables['FlagHC']
|
|
local flagHP = uservariables['FlagHP']
|
|
local lastValueCptElecGlobal = uservariables['LastValueCptElecGlobal']
|
|
|
|
-- Mode debug Oui / Non
|
|
local debug = uservariables['debug']
|
|
|
|
-- Fonction de mise à jour
|
|
function update(device, id, power, energy, index)
|
|
commandArray[index] = {['UpdateDevice'] = id .. "|0|" .. power .. ";" .. energy}
|
|
return
|
|
end
|
|
|
|
commandArray = {}
|
|
|
|
-- On prend en compte a chaque changement de valeur du compteur global
|
|
if (devicechanged[capteurGlobal]) then
|
|
if (debug == 'OUI') then
|
|
print('-- Calcul Compteurs HC / HP --')
|
|
print('CapteurGlobal = '..capteurGlobal)
|
|
print('CapteurCptHP = '..capteurCptHP)
|
|
print('CapteurCptHC = '..capteurCptHC)
|
|
print('idxCptHP = '..tostring(idxCptHP))
|
|
print('idxCptHC = '..tostring(idxCptHC))
|
|
print('flagHP = '..tostring(flagHP))
|
|
print('flagHC = '..tostring(flagHC))
|
|
print('LastValueCptElecGlobal = '..tostring(lastValueCptElecGlobal))
|
|
end
|
|
|
|
-- Recuperation des valeurs du compteur global
|
|
local consoCumule
|
|
local consoInstant
|
|
consoInstant, consoCumule = otherdevices_svalues[capteurGlobal]:match("([^;]+);([^;]+)")
|
|
consoInstant = tonumber(consoInstant)
|
|
consoCumule = tonumber(consoCumule)
|
|
|
|
if (debug == 'OUI') then
|
|
print('Conso Instant = '..tostring(consoInstant)..' / Conso Cumule = '..tostring(consoCumule)..' ')
|
|
end
|
|
|
|
-- Calcul de l'ecart avec le dernier envoi de donnees
|
|
lastValueCptElecGlobal = tonumber(lastValueCptElecGlobal)
|
|
local consoDelta = consoCumule - lastValueCptElecGlobal
|
|
|
|
if (debug == 'OUI') then
|
|
print('Delta conso = '..tostring(consoDelta))
|
|
end
|
|
|
|
local consoCumuleCible
|
|
local consoInstantCible
|
|
|
|
if (otherdevices[flagHC] == 'On') then
|
|
-- Periode heures creuse
|
|
-- Recuperation des valeurs du compteur global
|
|
consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHC]:match("([^;]+);([^;]+)")
|
|
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle valeur
|
|
consoCumuleCible = tonumber(consoCumuleCible)
|
|
|
|
if (debug == 'OUI') then
|
|
print('Compteur cible = HC')
|
|
print('Valeur precedente = '..tostring(consoCumuleCible))
|
|
print('Valeur ajustee = '..tostring(consoCumuleCible + consoDelta))
|
|
end
|
|
|
|
consoCumuleCible = consoCumuleCible + consoDelta
|
|
-- Mise à jour du compteur
|
|
update(capteurCptHC, idxCptHC, consoInstant, consoCumuleCible, 1)
|
|
|
|
-- Mise à 0 de la conso intantanee du compteur HP
|
|
consoInstantHP, consoCumuleHP = otherdevices_svalues[capteurCptHP]:match("([^;]+);([^;]+)")
|
|
consoInstantHP = 0
|
|
update(capteurCptHP, idxCptHP, consoInstantHP, consoCumuleHP, 2)
|
|
else
|
|
-- Periode heures pleines
|
|
-- Recuperation des valeurs du compteur global
|
|
consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHP]:match("([^;]+);([^;]+)")
|
|
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle valeur
|
|
consoCumuleCible = tonumber(consoCumuleCible)
|
|
|
|
if (debug == 'OUI') then
|
|
print('Compteur cible = HP')
|
|
print('Valeur precedente = '..tostring(consoCumuleCible))
|
|
print('Valeur ajustee = '..tostring(consoCumuleCible + consoDelta))
|
|
end
|
|
|
|
consoCumuleCible = consoCumuleCible + consoDelta
|
|
-- Mise à jour du compteur
|
|
update(capteurCptHP, idxCptHP, consoInstant, consoCumuleCible, 3)
|
|
|
|
-- Mise à 0 de la conso intantanee du compteur HC
|
|
consoInstantHC, consoCumuleHC = otherdevices_svalues[capteurCptHC]:match("([^;]+);([^;]+)")
|
|
consoInstantHC = 0
|
|
update(capteurCptHC, idxCptHC, consoInstantHC, consoCumuleHC, 4)
|
|
end
|
|
|
|
-- Sauvegarde de la valeur du compteur global pour prochain calcul
|
|
commandArray['Variable:LastValueCptElecGlobal'] = tostring(consoCumule)
|
|
|
|
if (debug == 'OUI') then
|
|
print('-- Fin Calcul Compteur HC / HP --')
|
|
end
|
|
end
|
|
|
|
return commandArray
|