Re: Repartition Consommation HC / HP...
Publié : 25 sept. 2015, 21:09
euh je suis en train de revoir mon script qui est plein de beugs 
Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
Code : 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_Amis']) -- 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 heures = 'HC_HP' -- Nom de l'interrupteur virtuel de choix heures creuses ou pleines
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 = 146 -- idx du capteur virtuel de consommation électrique
local conso_total = 'Conso TOTALE' -- nom du capteur virtuel de consommation électrique totale
local conso_total_id = 149 -- idx du capteur virtuel de consommation électrique totale
local conso_creuses = 'Conso HCreuses' -- nom du capteur virtuel de consommation électrique heures creuses
local conso_creuses_id = 147 -- idx du capteur virtuel de consommation électrique heures creuses
local conso_pleines = 'Conso HPleines' -- nom du capteur virtuel de consommation électrique heures pleines
local conso_pleines_id = 148 -- idx du capteur virtuel de consommation électrique heures pleines
--------------------------------
-- 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)
-- conso dans le capteur virtuel d'énergie heures creuses
npower3, energy3 = string.match(otherdevices_svalues[conso_creuses], "(%d+%.*%d*);(%d+%.*%d*)")
energy3 = tonumber(energy3) + (puissance / 60)
-- conso dans le capteur virtuel d'énergie heures pleines
npower4, energy4 = string.match(otherdevices_svalues[conso_pleines], "(%d+%.*%d*);(%d+%.*%d*)")
energy4 = tonumber(energy4) + (puissance / 60)
if (otherdevices[heures] == 'On') then
print('envoi dans les consos dont heures pleines')
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. puissance .. ';' .. energy2 }
commandArray[3]={['UpdateDevice'] = conso_pleines_id .. '|0|' .. puissance .. ';' .. energy4 }
else
print('envoi dans les consos dont heures creuses')
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. puissance .. ';' .. energy2 }
commandArray[3]={['UpdateDevice'] = conso_creuses_id .. '|0|' .. puissance .. ';' .. energy3 }
end
else
commandArray[radiateur]='Off'
print('Chauffage ' .. nom .. ' -. OFF .-')
end
print('il fait '..temperature..'C pour une consigne de '..consigne..'C souhaite dans la ' .. nom .. '')
return commandArray
Code : Tout sélectionner
-- script domoticz/scripts/lua/script_device_compteurHC-HP.lua
-- Initialisation des variables locales
local capteurGlobal = uservariables['CapteurGlobal']
local capteurCptHP = uservariables['CapteurCptHP']
local capteurCptHC = uservariables['CapteurCptHC']
local idxCptHP = uservariables['IdxCptHP']
local idxCptHC = uservariables['IdxCptHC']
local memo_hp = uservariables['Memo_HP']
local memo_hc = uservariables['Memo_HC']
local etathc = uservariables['EtatHC']
-- 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 .. ";" .. ene$
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('HC = '..tostring(etathc))
end
-- extraction de la puissance consommé en watt
-- Attention remplacer dans la ligne ci-dessous 'Compteur EDF' par le nom de vot$
-- extraction de la valeur en watt , (P1 smart meter, ex: "Data" : "17564059;985$
a, b, x, y, watt, z = string.match(otherdevices_svalues['Compteur EDF'], "(%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)
--Detection HP/HC en fonction du chgt de valeur du compteur EDF
if (tonumber(memo_hp)< heurespleines) then
if (debug == 'OUI') then
print('Détection Heures pleines')
end
etathc = 'Off'
elseif (tonumber(memo_hc)< heurescreuses) then
if (debug == 'OUI') then
print('Détection Heures Creuses')
end
etathc = 'On'
end
--memorisation des dernieres valeurs pour prochain calcul
commandArray['Variable:EtatHC'] = etathc
commandArray['Variable:Memo_HP'] = tostring(heurespleines)
commandArray['Variable:Memo_HC'] = tostring(heurescreuses)
watt = tonumber(watt)
if (debug == 'OUI') then
print('Heures pleines = '..tostring(heurespleines)..' / Heures Creuses =$
end
local consoCumuleCible
local consoInstantCible
--if (otherdevices[flagHC] == 'On') then
if (etathc == 'On') then
-- Periode heures creuse
-- Recupération des valeurs actuelles du compteur Heures Creuses
consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHC]$
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle v$
consoCumuleCible = tonumber(consoCumuleCible)
if (debug == 'OUI') then
print('Compteur cible = HC')
print('Valeur precedente = '..tostring(consoCumuleCible))
end
-- 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[flagHC] == 'Off') then
if (etathc == 'Off') then
-- Periode heures pleines
-- Récuperation des valeurs du compteur Heures Pleines
consoInstancible, consoCumuleCible = otherdevices_svalues[capteurCptHP]:$
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle v$
consoCumuleCible = tonumber(consoCumuleCible)
if (debug == 'OUI') then
print('Compteur cible = HP')
print('Valeur precedente = '..tostring(consoCumuleCible))
end
-- 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
if (debug == 'OUI') then
print('-- Fin Calcul Compteur HC / HP --')
end
end
end
return commandArray