Voila j'aimerai l'avis des spécialistes en scripts lua pour optimiser mes scripts de chauffage dont voici un exemple :
Code : Tout sélectionner
-- Alexandre DUBOIS - 2014
-- Ce script permet de maintenir la température de la chambre de maxime entre 17°C et 19°C quand l'interrupteur
-- virtuel 'Thermostat Ch Maxime' est activé.
--------------------------------
------ Variables à éditer ------
--------------------------------
-- local consigne = 19 --Température de consigne
local consigne = tonumber(otherdevices_svalues['Consigne Ch Maxime'])
local hysteresis1 = 0.5 --Valeur seuil superieure
local hysteresis2 = 1 --Valeur seuil inferieure
local sonde = 'Ch. Maxime' --Nom de la sonde de température
local thermostat = 'Thermostat Ch Maxime' --Nom de l'interrupteur virtuel du thermostat
local radiateur = 'Radiateur Ch Maxime' --Nom du radiateur à allumer/éteindre
local absent = 'Mode ABSENT' -- mode longue absence
local papa = 'Mode MAXIME PAPA' -- quand le petit est chez son pere
local consigneabsent = tonumber(otherdevices_svalues['Consigne ABSENT'])
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
--La sonde Oregon 'Temperature Ch Maxime' emet toutes les 40 secondes. Ce sera approximativement la fréquence
-- d'exécution de ce script.
if (devicechanged[sonde]) then
local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée dans la chambre de maxime
-- pas de mode ABSENT ou MAXIME PAPA sur on
if (otherdevices[absent]=='Off') or (otherdevices[papa]=='Off') then
--On n'agit que si le "Thermostat" est actif
if (otherdevices[thermostat]=='On') then
print('-- Gestion du thermostat pour la chambre de maxime --')
if (temperature < (consigne - hysteresis2) ) then
print('Allumage du chauffage dans la chambre de maxime')
commandArray[radiateur]='On'
elseif (temperature > (consigne + hysteresis1)) then
print('Extinction du chauffage dans la chambre de maxime')
commandArray[radiateur]='Off'
end
-- elseif (otherdevices[thermostat]=='Off') then
-- print('Fin de la régulation')
-- commandArray[radiateur]='Off'
end
else
-- si mode ABSENT ou MAXIME PAPA sur on
--On n'agit que si le "Thermostat" est actif
if (otherdevices[thermostat]=='On') then
print('-- Gestion du thermostat pour la chambre de maxime --')
if (temperature < (consigneabsent - hysteresis2) ) then
print('Allumage du chauffage dans la chambre de maxime')
commandArray[radiateur]='On'
elseif (temperature > (consigneabsent + hysteresis1)) then
print('Extinction du chauffage dans la chambre de maxime')
commandArray[radiateur]='Off'
end
end
end
end
return commandArray
deux consigne de thermostat :
- un pour la pièce: permet de choisir la température
- un pour les absences longues: un mode éco pour les absences
deux interrupteurs virtuel
- Mode ABSENT: permet de switcher sur des température basse lors d'absence prolongées
- Mode MAXIME PAPA : quand le grand est chez son père, on chauffe comme dans le cas d'absence longue
deux variables pour l’hystérésis : pour tenir compte de l'inertie des radiateur
y a-t-il possibilité de simplifier le code qui fonctionne très bien ?
un soucis toutes fois : si le thermostat est sur on et qu'il passe sur off et que le chauffage était sur on, le chauffage reste sur on
j'ai testé plusieurs trucs mais rien de fonctionnel et qui permette de piloter le chauffage manuellement.