-- 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