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