[LUA] Consolidation température pour régulation globale + Gestion ouvertures fenêtres
Publié : 20 nov. 2016, 15:33
Le 20/11 16:00
Bonjour,
Dans le cadre de la régulation de ma chaudière Frisquet (Voir topic dédié initié par AllezLeLosc), j'ai développé ce script LUA afin de consolider une température globale de la maison. Cette température est alors comparée à la Consigne de température ambiante dans le cadre de la régulation.
Cela peut être utilisé pour tout type de régulation.
Le calcul de la température utilise des facteurs de pondérations.
Dans l'exemple ci-dessous, la chambre de Marie a 1 car elle est plein nord et au dessus du garage mal isolé. Les 2 autres chambres sont à 0,5 car elles sont bien isolées. Le salon est très grand et au sud, de fait il est à 0,75. Ces valeurs ont été déterminées de façon empiriques afin d'avoir la meilleure stabilité de température par pièce en fonction des souhaits. (Les chambres sont à bonnes températures, les études supérieures imposent de longues heure au bureau sans bouger). Les pièces avec des petits facteurs ont les robinets thermostatiques à 3 (20°c), les autres sont ouverts au max.
local temp_consolidee = ((temp_marie_c * 1) + (temp_lea_c * 0.5) + (temp_parents_c * 0.5) + (temp_salon_c * 0.75)) / 2.75

Le script gère le cas où l'on ouvre une fenêtre pour aérer une pièce via la baisse abrupte de température de plus de 0,5°c entre 2 mesures.
Cette valeur doit être ajusté en fonction de l'inertie de vos sondes. Quand la pièce est détectée ouverte, on fige la dernière valeur de température de la pièce pour le calcul de la température consolidée. Cela évite que la chaudière démarre "à fond" en plein hiver...
Quand la température de la pièce repasse en dessus de la valeur figée, on considère que la fenêtre est alors fermée. On reprend alors le calcul avec la valeur mesurée.
Ce script s'appui sur 2 variables domoticz pour chaque pièce.
- temp_marie (Température sauvegardée)
- statut_temp_marie (Open, Closed)
C'est un 1er jet encore imparfait que je vais mettre à jour au fil de l'eau.
Tof
Log
2016-11-20 14:49:13.171 LUA: =========== Script Calcul Température Consolidée===========
2016-11-20 14:49:13.171 LUA: Temp. Marie actuelle = 18.6
2016-11-20 14:49:13.171 LUA: Temp. Léa actuelle = 21.4
2016-11-20 14:49:13.171 LUA: Temp. Parents actuelle = 20.3
2016-11-20 14:49:13.171 LUA: Temp. Salon actuelle = 19.4
2016-11-20 14:49:13.171 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.171 LUA: Temp. Marie previous = 20.3
2016-11-20 14:49:13.171 LUA: Temp. Léa previous = 21.4
2016-11-20 14:49:13.172 LUA: Temp. Parents previous = 20.3
2016-11-20 14:49:13.172 LUA: Temp. Salon previous = 19.4
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Statut Marie = Closed
2016-11-20 14:49:13.172 LUA: Statut Léa = Closed
2016-11-20 14:49:13.172 LUA: Statut Parents = Closed
2016-11-20 14:49:13.172 LUA: Statut Salon = Closed
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Marie : détection ouverture
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Temp. Marie prise en compte = 18.6
2016-11-20 14:49:13.172 LUA: Temp. Léa prise en compte = 21.4
2016-11-20 14:49:13.172 LUA: Temp. Parents prise en compte = 20.3
2016-11-20 14:49:13.172 LUA: Temp. Salon prise en compte = 19.4
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Temp. Consolidée = 19.64
2016-11-20 14:54:18.159 LUA: Temp. Marie actuelle = 19.9
2016-11-20 14:54:18.159 LUA: Temp. Léa actuelle = 21.4
2016-11-20 14:54:18.159 LUA: Temp. Parents actuelle = 20.3
2016-11-20 14:54:18.159 LUA: Temp. Salon actuelle = 19.3
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Temp. Marie previous = 18.6
2016-11-20 14:54:18.159 LUA: Temp. Léa previous = 21.4
2016-11-20 14:54:18.159 LUA: Temp. Parents previous = 20.3
2016-11-20 14:54:18.159 LUA: Temp. Salon previous = 19.3
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Statut Marie = Open
2016-11-20 14:54:18.159 LUA: Statut Léa = Closed
2016-11-20 14:54:18.159 LUA: Statut Parents = Closed
2016-11-20 14:54:18.159 LUA: Statut Salon = Closed
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Marie : détection fermeture
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Temp. Marie prise en compte = 18.6
2016-11-20 14:54:18.159 LUA: Temp. Léa prise en compte = 21.4
2016-11-20 14:54:18.159 LUA: Temp. Parents prise en compte = 20.3
2016-11-20 14:54:18.159 LUA: Temp. Salon prise en compte = 19.3
2016-11-20 14:54:18.160 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.160 LUA: Temp. Consolidée = 19.61
2016-11-20 14:54:18.209 LUA: =========== Script Calcul Température Consolidée===========
2016-11-20 14:54:18.209 LUA: Temp. Marie actuelle = 19.9
2016-11-20 14:54:18.209 LUA: Temp. Léa actuelle = 21.5
2016-11-20 14:54:18.209 LUA: Temp. Parents actuelle = 20.3
2016-11-20 14:54:18.209 LUA: Temp. Salon actuelle = 19.3
2016-11-20 14:54:18.209 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.209 LUA: Temp. Marie previous = 18.6
2016-11-20 14:54:18.209 LUA: Temp. Léa previous = 21.4
2016-11-20 14:54:18.209 LUA: Temp. Parents previous = 20.3
2016-11-20 14:54:18.209 LUA: Temp. Salon previous = 19.3
2016-11-20 14:54:18.209 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.209 LUA: Statut Marie = Closed
2016-11-20 14:54:18.209 LUA: Statut Léa = Closed
2016-11-20 14:54:18.209 LUA: Statut Parents = Closed
2016-11-20 14:54:18.209 LUA: Statut Salon = Closed
2016-11-20 14:54:18.209 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.209 LUA: Temp. Marie prise en compte = 19.9
2016-11-20 14:54:18.210 LUA: Temp. Léa prise en compte = 21.5
2016-11-20 14:54:18.210 LUA: Temp. Parents prise en compte = 20.3
2016-11-20 14:54:18.210 LUA: Temp. Salon prise en compte = 19.3
2016-11-20 14:54:18.210 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.210 LUA: Temp. Consolidée = 20.1
Bonjour,
Dans le cadre de la régulation de ma chaudière Frisquet (Voir topic dédié initié par AllezLeLosc), j'ai développé ce script LUA afin de consolider une température globale de la maison. Cette température est alors comparée à la Consigne de température ambiante dans le cadre de la régulation.
Cela peut être utilisé pour tout type de régulation.
Le calcul de la température utilise des facteurs de pondérations.
Dans l'exemple ci-dessous, la chambre de Marie a 1 car elle est plein nord et au dessus du garage mal isolé. Les 2 autres chambres sont à 0,5 car elles sont bien isolées. Le salon est très grand et au sud, de fait il est à 0,75. Ces valeurs ont été déterminées de façon empiriques afin d'avoir la meilleure stabilité de température par pièce en fonction des souhaits. (Les chambres sont à bonnes températures, les études supérieures imposent de longues heure au bureau sans bouger). Les pièces avec des petits facteurs ont les robinets thermostatiques à 3 (20°c), les autres sont ouverts au max.
local temp_consolidee = ((temp_marie_c * 1) + (temp_lea_c * 0.5) + (temp_parents_c * 0.5) + (temp_salon_c * 0.75)) / 2.75

Le script gère le cas où l'on ouvre une fenêtre pour aérer une pièce via la baisse abrupte de température de plus de 0,5°c entre 2 mesures.
Cette valeur doit être ajusté en fonction de l'inertie de vos sondes. Quand la pièce est détectée ouverte, on fige la dernière valeur de température de la pièce pour le calcul de la température consolidée. Cela évite que la chaudière démarre "à fond" en plein hiver...
Quand la température de la pièce repasse en dessus de la valeur figée, on considère que la fenêtre est alors fermée. On reprend alors le calcul avec la valeur mesurée.
Ce script s'appui sur 2 variables domoticz pour chaque pièce.
- temp_marie (Température sauvegardée)
- statut_temp_marie (Open, Closed)
C'est un 1er jet encore imparfait que je vais mettre à jour au fil de l'eau.
Tof
Code : Tout sélectionner
--
-- Script : script_device_calcul_temp_consolidée.lua
--
-- Objectif : Calcul température consolidée basée sur les 4 sondes de température
--
-- Auteur : CBR
-- Date : 12/11/2016
-- Version : 1.2
-- History : 1.2 : Gestion de l'ouverture des fenêtres, Cas ou la température baisse de plus de 0.5°C entre 2 Acquisitions de température pour une pièce donnée.
-- Dans ce cas, on garde la dernière température connue avant la chute afin de calculer la température consolidée
---------------------------------------------------------------------------
commandArray = {}
if devicechanged['Temp. Ch Marie'] or devicechanged['Temp. Ch Léa'] or devicechanged['Temp. Ch Parents'] or devicechanged['Temp. Salon'] then
-- Acquisition températures actuelles
local temp_marie_a = tonumber(otherdevices_svalues['Temp. Ch Marie']) -- Temp relevée dans la chambre de Marie
local temp_lea_a = tonumber(otherdevices_svalues['Temp. Ch Léa']) -- Temp relevée dans la chambre de Léa
local temp_parents_a = tonumber(otherdevices_svalues['Temp. Ch Parents']) -- Temp relevée dans la chambre des Parents
local temp_salon_a = tonumber(otherdevices_svalues['Temp. Salon']) -- Temp relevée dans le Salon
-- Acquisition températures précédentes _p
local temp_marie_p = uservariables["temp_marie"]
local temp_lea_p = uservariables["temp_lea"]
local temp_parents_p = uservariables["temp_parents"]
local temp_salon_p = uservariables["temp_salon"]
-- Valorisation températures calculées _c
local temp_marie_c = 0
local temp_lea_c = 0
local temp_parents_c = 0
local temp_salon_c = 0
-- Acquisition statut ouverture fenêtre _s 1 : détection ouverture / 0 : normal
local temp_marie_s = uservariables["statut_temp_marie"]
local temp_lea_s = uservariables["statut_temp_lea"]
local temp_parents_s = uservariables["statut_temp_parents"]
local temp_salon_s = uservariables["statut_temp_salon"]
print "=========== Script Calcul Température Consolidée==========="
print ('Temp. Marie actuelle = '..temp_marie_a)
print ('Temp. Léa actuelle = '..temp_lea_a)
print ('Temp. Parents actuelle = '..temp_parents_a)
print ('Temp. Salon actuelle = '..temp_salon_a)
print "-----------------------------------------------------------"
print ('Temp. Marie previous = '..temp_marie_p)
print ('Temp. Léa previous = '..temp_lea_p)
print ('Temp. Parents previous = '..temp_parents_p)
print ('Temp. Salon previous = '..temp_salon_p)
print "-----------------------------------------------------------"
print ('Statut Marie = '..temp_marie_s)
print ('Statut Léa = '..temp_lea_s)
print ('Statut Parents = '..temp_parents_s)
print ('Statut Salon = '..temp_salon_s)
if temp_marie_s == "Closed" then
if temp_marie_a-temp_marie_p <= -0.5 then
commandArray['Variable:statut_temp_marie'] = "Open"
print "-----------------------------------------------------------"
print "Marie : détection ouverture"
end
commandArray['Variable:temp_marie'] = tostring(temp_marie_a)
temp_marie_c = temp_marie_a
else
temp_marie_c = temp_marie_p -- on calcule avec la temp. conservée au moment du passage en mode ouverture
if temp_marie_a > temp_marie_p then
commandArray['Variable:statut_temp_marie'] = "Closed" -- si temp remonte au dessus de la temp. conservée, on passe en mode normal
print "-----------------------------------------------------------"
print "Marie : détection fermeture"
end
end
if temp_lea_s == "Closed" then
if temp_lea_a-temp_lea_p <= -0.5 then
commandArray['Variable:statut_temp_lea'] = "Open"
print "-----------------------------------------------------------"
print "Lea : détection ouverture"
end
commandArray['Variable:temp_lea'] = tostring(temp_lea_a)
temp_lea_c = temp_lea_a
else
temp_lea_c = temp_lea_p -- on calcule avec la temp. conservée au moment du passage en mode ouverture
if temp_lea_a > temp_lea_p then
commandArray['Variable:statut_temp_lea'] = "Closed" -- si temp remonte au dessus de la temp. conservée, on passe en mode normal
print "-----------------------------------------------------------"
print "Lea : détection fermeture"
end
end
if temp_parents_s == "Closed" then
if temp_parents_a-temp_parents_p <= -0.5 then
commandArray['Variable:statut_temp_parents'] = "Open"
print "-----------------------------------------------------------"
print "Parents : détection ouverture"
end
commandArray['Variable:temp_parents'] = tostring(temp_parents_a)
temp_parents_c = temp_parents_a
else
temp_parents_c = temp_parents_p -- on calcule avec la temp. conservée au moment du passage en mode ouverture
if temp_parents_a > temp_parents_p then
commandArray['Variable:statut_temp_parents'] = "Closed" -- si temp remonte au dessus de la temp. conservée, on passe en mode normal
print "-----------------------------------------------------------"
print "Parents : détection fermeture"
end
end
if temp_salon_s == "Closed" then
if temp_salon_a-temp_salon_p <= -0.5 then
commandArray['Variable:statut_temp_salon'] = "Open"
print "-----------------------------------------------------------"
print "Salon : détection ouverture"
end
commandArray['Variable:temp_salon'] = tostring(temp_salon_a)
temp_salon_c = temp_salon_a
else
temp_salon_c = temp_salon_p -- on calcule avec la temp. conservée au moment du passage en mode ouverture
if temp_salon_a > temp_salon_p then
commandArray['Variable:statut_temp_salon'] = "Closed" -- si temp remonte au dessus de la temp. conservée, on passe en mode normal
print "-----------------------------------------------------------"
print "Salon : détection fermeture"
end
end
local temp_consolidee = ((temp_marie_c * 1) + (temp_lea_c * 0.5) + (temp_parents_c * 0.5) + (temp_salon_c * 0.75)) / 2.75
local idx = 80 -- Idx Temp. Consolidée
temp_consolidee = math.floor(temp_consolidee * 100 + 0.5) / 100 -- Arrondi au centième
commandArray['UpdateDevice'] = idx .. '|0|' .. tostring(temp_consolidee) -- On écrit la température calculée
print "-----------------------------------------------------------"
print ('Temp. Marie prise en compte = '..temp_marie_c)
print ('Temp. Léa prise en compte = '..temp_lea_c)
print ('Temp. Parents prise en compte = '..temp_parents_c)
print ('Temp. Salon prise en compte = '..temp_salon_c)
print "-----------------------------------------------------------"
print ('Temp. Consolidée = '..temp_consolidee)
print "=========== Fin Script Calcul Température Consolidée ==========="
end
return commandArray
2016-11-20 14:49:13.171 LUA: =========== Script Calcul Température Consolidée===========
2016-11-20 14:49:13.171 LUA: Temp. Marie actuelle = 18.6
2016-11-20 14:49:13.171 LUA: Temp. Léa actuelle = 21.4
2016-11-20 14:49:13.171 LUA: Temp. Parents actuelle = 20.3
2016-11-20 14:49:13.171 LUA: Temp. Salon actuelle = 19.4
2016-11-20 14:49:13.171 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.171 LUA: Temp. Marie previous = 20.3
2016-11-20 14:49:13.171 LUA: Temp. Léa previous = 21.4
2016-11-20 14:49:13.172 LUA: Temp. Parents previous = 20.3
2016-11-20 14:49:13.172 LUA: Temp. Salon previous = 19.4
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Statut Marie = Closed
2016-11-20 14:49:13.172 LUA: Statut Léa = Closed
2016-11-20 14:49:13.172 LUA: Statut Parents = Closed
2016-11-20 14:49:13.172 LUA: Statut Salon = Closed
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Marie : détection ouverture
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Temp. Marie prise en compte = 18.6
2016-11-20 14:49:13.172 LUA: Temp. Léa prise en compte = 21.4
2016-11-20 14:49:13.172 LUA: Temp. Parents prise en compte = 20.3
2016-11-20 14:49:13.172 LUA: Temp. Salon prise en compte = 19.4
2016-11-20 14:49:13.172 LUA: -----------------------------------------------------------
2016-11-20 14:49:13.172 LUA: Temp. Consolidée = 19.64
2016-11-20 14:54:18.159 LUA: Temp. Marie actuelle = 19.9
2016-11-20 14:54:18.159 LUA: Temp. Léa actuelle = 21.4
2016-11-20 14:54:18.159 LUA: Temp. Parents actuelle = 20.3
2016-11-20 14:54:18.159 LUA: Temp. Salon actuelle = 19.3
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Temp. Marie previous = 18.6
2016-11-20 14:54:18.159 LUA: Temp. Léa previous = 21.4
2016-11-20 14:54:18.159 LUA: Temp. Parents previous = 20.3
2016-11-20 14:54:18.159 LUA: Temp. Salon previous = 19.3
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Statut Marie = Open
2016-11-20 14:54:18.159 LUA: Statut Léa = Closed
2016-11-20 14:54:18.159 LUA: Statut Parents = Closed
2016-11-20 14:54:18.159 LUA: Statut Salon = Closed
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Marie : détection fermeture
2016-11-20 14:54:18.159 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.159 LUA: Temp. Marie prise en compte = 18.6
2016-11-20 14:54:18.159 LUA: Temp. Léa prise en compte = 21.4
2016-11-20 14:54:18.159 LUA: Temp. Parents prise en compte = 20.3
2016-11-20 14:54:18.159 LUA: Temp. Salon prise en compte = 19.3
2016-11-20 14:54:18.160 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.160 LUA: Temp. Consolidée = 19.61
2016-11-20 14:54:18.209 LUA: =========== Script Calcul Température Consolidée===========
2016-11-20 14:54:18.209 LUA: Temp. Marie actuelle = 19.9
2016-11-20 14:54:18.209 LUA: Temp. Léa actuelle = 21.5
2016-11-20 14:54:18.209 LUA: Temp. Parents actuelle = 20.3
2016-11-20 14:54:18.209 LUA: Temp. Salon actuelle = 19.3
2016-11-20 14:54:18.209 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.209 LUA: Temp. Marie previous = 18.6
2016-11-20 14:54:18.209 LUA: Temp. Léa previous = 21.4
2016-11-20 14:54:18.209 LUA: Temp. Parents previous = 20.3
2016-11-20 14:54:18.209 LUA: Temp. Salon previous = 19.3
2016-11-20 14:54:18.209 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.209 LUA: Statut Marie = Closed
2016-11-20 14:54:18.209 LUA: Statut Léa = Closed
2016-11-20 14:54:18.209 LUA: Statut Parents = Closed
2016-11-20 14:54:18.209 LUA: Statut Salon = Closed
2016-11-20 14:54:18.209 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.209 LUA: Temp. Marie prise en compte = 19.9
2016-11-20 14:54:18.210 LUA: Temp. Léa prise en compte = 21.5
2016-11-20 14:54:18.210 LUA: Temp. Parents prise en compte = 20.3
2016-11-20 14:54:18.210 LUA: Temp. Salon prise en compte = 19.3
2016-11-20 14:54:18.210 LUA: -----------------------------------------------------------
2016-11-20 14:54:18.210 LUA: Temp. Consolidée = 20.1