Le système a besoin de 4 entités Domoticz et d'un script de commande :
Dans Domoticz, le thermomètre et le chauffage sont des élements réels. Le thermostat et la consigne, par contre, sont des élements virtuels.
On veut avoir une pièce à 20°C : on règle la consigne à cette température.
On défini une marge d'action qui est en degrés : prenons par exemple 1/2 degré Celsius.
Avec ce principe, si la température naturelle de la pièce est relativement stable et le chauffage efficace, sans latence, la température de la pièce thermostatée oscillera entre 19,5°C et 20,5°C Dans les faits c'est rarement vrai (à cause de la latence du chauffage, de l'éloignement du thermomètre, et de l'isolation de la pièce)
Ici, le script gère également un paramétrage supplémentaire si la commande “On” ou “Off” n'a pas fonctionné (on n'a pas de feedback en RFXCOM). Si la température excède de 1.5°C les limites atteintes par la tolérance (quelque soit le sens), on envoie la commande adéquate à chaque itération du script jusqu'au retour à la normale.
local hysteresis = 0.5 --Valeur de tolérance (hystérésis) local sonde = 'Thermomètre de la piece' --Nom de la sonde de température local thermostat = 'Interrupteur Thermostat' --Nom de l'interrupteur virtuel du thermostat local radiateur = 'Radiateur' --Nom du radiateur à allumer/éteindre local deviceconsigne = 'Consigne de la piece' -- ------------------------------------------------------------------------------------------------- commandArray = {} --La sonde emet toutes les 40 secondes. Ce sera approximativement la fréquence d'exécution de ce script. if (devicechanged[sonde]) then local consigne = otherdevices[deviceconsigne] -- Récupération de la température de consigne local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée dans la pièce --On n'agit que si le "thermostat" est actif if (otherdevices[thermostat]=='On') then if (temperature <= (consigne - hysteresis) and otherdevices[radiateur]=='On') then print('Allumage du chauffage dans la pièce') commandArray[radiateur]='Off' elseif (temperature >= (consigne + hysteresis) and otherdevices[radiateur]=='Off') then print('Extinction du chauffage dans la pièce') elseif (temperature <= (consigne - hysteresis - 1.5)) then commandArray[radiateur]='Off' elseif (temperature >= (consigne + hysteresis + 1.5)) then commandArray[radiateur]='On' end -- Extinction immédiate du chauffage si on a arrété le thermostat elseif (otherdevices[thermostat]=='Off' and otherdevices[radiateur]=='Off') then print('Thermostat Désactivé : Extinction du chauffage dans la pièce') commandArray[radiateur]='On' end end return commandArray
ATTENTION : Dans ce script, l'interrupteur Chacon utilisé pour le chauffage en “Fil pilote” marche à l'envers.
Il faut être à “Off” pour l'allumer et “On” pour l'éteindre !
Pour faire des économies de chauffage, le plus simple à partir de là, est d'appliquer une planification au Thermostat. Déterminez le temps nécéssaire à la chauffe d'une pièce depuis sa température naturelle : mettons 1h.
On pourrait planifier comme ceci :
On pourrait planifier comme ceci :
Prenez en compte les week-ends pour adapter vos heures !
Privilégiez aussi les heures creuses si votre compteur électrique en tient compte !