Moi je rencontre un petit soucis
En fait pour le compteur total, j'utilise un compteur virtuel.
De ce fait, le script ne détecte pas le changement d'état
Quelqu'un aurait une solution, a part d'acheter un vrai compteur
Si quelqu'un aune solutionjackslayter a écrit :faire pour que le script se lance toute les minutes
Au pire, envoie ton script modifié, on verra comment ton capteur global est implémenté.Triple0s a écrit :Si quelqu'un aune solutionjackslayter a écrit :faire pour que le script se lance toute les minutesparce quela je ne vois pas
Code : Tout sélectionner
-- script domoticz/scripts/lua/script_device_compteurHCHP.lua
-- Initialisation des variables locales
local capteurGlobal = uservariables['Conso Totale']
local capteurCptHP = uservariables['Conso HPleines']
local capteurCptHC = uservariables['Conso HCreuses']
local idxCptHP = uservariables['112']
local idxCptHC = uservariables['111']
local flagHC = uservariables['HC_HP']
-- local flagHP = uservariables['FlagHP']
-- Mode debug Oui / Non
local debug = uservariables['OUI']
-- 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
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))
-- extraction de la puissance consommé en watt
-- Attention remplacer dans la ligne ci-dessous 'Compteur EDF' par le nom de votre capteur principal, ne pas mettre l'uservariable 'CapteurGlobal' ca ne marche pas
-- extraction de la valeur en watt , (P1 smart meter, ex: "Data" : "17564059;9855288;0;0;517;0")
a, b, x, y, watt, z = string.match(otherdevices_svalues[capteurGlobal], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
usage = tonumber(watt)
-- Recuperation des valeurs du compteur principal
local heurescreuses
local heurespleines
heurespleines, heurescreuses = otherdevices_svalues[capteurGlobal]:match("([^;]+);([^;]+)")
heurespleines = tonumber(heurespleines)
heurescreuses = tonumber(heurescreuses)
watt = tonumber(watt)
print('Heures pleines = '..tostring(heurespleines)..' / Heures Creuses = '..tostring(heurescreuses)..' / Watt = '..tostring(usage)..' ')
local consoCumuleCible
local consoInstantCible
if (otherdevices[flagHP] == 'Off') then
-- Periode heures creuse
-- Recupération des valeurs actuelles du compteur Heures Creuses
consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHC]:match("([^;]+);([^;]+)")
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle valeur
consoCumuleCible = tonumber(consoCumuleCible)
print('Compteur cible = HC')
print('Valeur precedente = '..tostring(consoCumuleCible))
-- Calcul de la conso journalière HC
consoCumuleCible = consoCumuleCible + heurescreuses
-- Mise à jour du compteur
update(capteurCptHC, idxCptHC, usage , heurescreuses, 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
if (otherdevices[flagHP] == 'On') then
-- Periode heures pleines
-- Récuperation des valeurs du compteur Heures Pleines
consoInstancible, consoCumuleCible = otherdevices_svalues[capteurCptHP]:match("([^;]+);([^;]+)")
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle valeur
consoCumuleCible = tonumber(consoCumuleCible)
print('Compteur cible = HP')
print('Valeur precedente = '..tostring(consoCumuleCible))
-- calcul de la conso journaliere HP
consoCumuleCible = consoCumuleCible + heurespleines
-- Mise à jour du compteur
update(capteurCptHP, idxCptHP, usage , heurespleines, 3)
-- Mise à 0 de la conso intantanée du compteur HC
consoInstantHC, consoCumuleHC = otherdevices_svalues[capteurCptHC]:match("([^;]+);([^;]+)")
consoInstantHC = 0
update(capteurCptHC, idxCptHC, consoInstantHC, consoCumuleHC, 4)
end
print('-- Fin Calcul Compteur HC / HP --')
end
end
return commandArrayCode : Tout sélectionner
-- Ce script permet de maintenir la température
--------------------------------
------ Variables à éditer ------
--------------------------------
nom = 'chambre d amis' --Affichage dans le log
local consigne_conf = tonumber(otherdevices_svalues['Therm_Chambres']) -- Température de consigne confort
local consigne_eco = tonumber(otherdevices_svalues['Therm_Eco']) -- Température de consigne économique
local sonde = 'Temp Amis' -- Nom de la sonde de température
local mode = 'Chauffage_mode_confort' -- Nom de l'interrupteur virtuel de sélection de mode Off=eco On=confort
local presence = 'Presence' -- Nom de l'interrupteur virtuel de thermostat (Off=abscence prolongée)
local radiateur = 'Radiateur Amis' -- Nom de l'interrupteur de chauffage
local puissance = 1000 -- puissance du chauffage en watt
local conso = 'Conso_Amis' -- nom du capteur virtuel de consommation électrique
local conso_id = 102 -- idx du capteur virtuel de consommation électrique
local conso_total = 'Conso Totale' -- nom du capteur virtuel de consommation électrique totale
local conso_total_id = 117 -- idx du capteur virtuel de consommation électrique totale
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
local temperature = tonumber(string.sub(otherdevices_svalues[sonde],1,4)) -- Température relevée
-- si présence détectée et chauffage sur normal
if ((otherdevices[presence] == 'On') and (otherdevices[mode] == 'On')) then
consigne = consigne_conf
else
consigne = consigne_eco
end
if (temperature < consigne) then
commandArray[radiateur]='On'
print('Chauffage ' .. nom .. ' -. ON .-')
-- envoie de la conso dans le capteur virtuel d'énergie
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
energy = tonumber(energy) + (puissance / 60)
-- conso dans le capteur virtuel d'énergie total
npower2, energy2 = string.match(otherdevices_svalues[conso_total], "(%d+%.*%d*);(%d+%.*%d*)")
energy2 = tonumber(energy2) + (puissance / 60)
-- envoi
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. puissance .. ';' .. energy2 }
else
commandArray[radiateur]='Off'
print('Chauffage ' .. nom .. ' -. OFF .-')
-- envoie de la conso dans le capteur virtuel d'énergie
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
energy = tonumber(energy)
-- envoie de la conso dans le capteur virtuel d'énergie total
npower2, energy2 = string.match(otherdevices_svalues[conso_total], "(%d+%.*%d*);(%d+%.*%d*)")
energy2 = tonumber(energy2)
-- envoi
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. 0 .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. 0 .. ';' .. energy2 }
end
print('il fait '..temperature..'C pour une consigne de '..consigne..'C souhaite dans la ' .. nom .. '')
return commandArray