Control your floor heating with a smart home controller


Construction_maison_2014-11-30 14-59-45_This is the fourth post about central heating automation of my own heating system described in first post.

You may have already heard that floor heating is great, but it’s a little complicated to set up and regulate. Indeed, floor heating is based on the storage of heat in the slab, using low temperature hot water. The heating time is longer and the water temperature should be controlled more precisely.

Recent boilers ensure good management and regulation of floor heating without much effort. How to manage such a heating mode and what benefit to gain ? You may find some answers in this article

In regards to comments I received, I’ve added a paragraph called Is there any interest to change floor heating temperature setpoint ?


As specified in post Calibrating your heater, my condensing boiler is optimizing the level of heating in relation to the outside temperature by itself. Furthermore setting automatic start / stop of the flame is carried on analysis of the return temperature of water.

The room thermostat is then used to adjust precisely the temperature inside the room and achieve daily programming. Replacing the thermostat by a home automation module (see post Control a gas boiler wih your the home automation system) is used to give control to the home automation controller of the house.

It is then possible to incorporate equivalent functions to smart thermostats such as NEST or QIVIVO :

  • remote control of heating
  • fine management of time slots according to a timetable
  • use of information of human presence or not in the house to adjust the temperature
  • use of the location of people to start heating when returning
  • Access to historical values and charts to analyze and optimize

Temperature regulation

I use the standard thermostat device proposed by my eedomus controller to achieve regulation. In the case of floor heating, its settings are special.


  • chaufferdc_compare_tempindoor thermometer is manager by an Aeon Labs multisensor 4in1 sensor supplied by mains through its USB connector (no more battery to replace!).
    Although its test have shown big difference in temperature measurement vs other devices, it appears that temperature values are correct in regards to my other thermometer when multisensor is at correct place, meaning just below the ceiling.
  • outdoor temperature probe have no effect, although it’s declared. This is caused by  ‘T’ coefficient which is null.
  • ‘C’ coefficient is equal to 10, which is a very high value. Impact is on the way thermostat’s going to work : basic ON/OFF mode (stop heating if too hot, start heating if too cold). Boiler’s managing the other aspects of regulation
  • I’m using also the auto-stop feature of thermostat when door detectors on my main entrance or outdoor kitchen door detect any opening.

 Automation of heating temperature versus events

The aim is to achieve an intelligent adaptation of the thermostat according to the timeframe and people inside the house.

The first setup was initially based on eedomus programming rules. Rules have multiplied and it appeared that using a php script is simplifying the writing of the rules, also reducing the computational load for eedomus.

Is there any interest to change floor heating temperature setpoint ?

A floor heating has an important thermal inertia, then temperature changes are long (several hours). Those changes are longer if temperature variation is importante. It’s then useless to modify temperature setpoint too much during a day. This inertia has effects in both direction : decrease of temperature in the room is also slow, and a decrease of setpoint by 0.5°C stops the boiler during 2 ou 3 hours

In the proposed script, temperature setpoint is reduced by 1°C during the night and heating restart early in the morning (this value of  1°C may be still a little too high). When absent from home, temperature setpoint is decreased by 0,5°C, the home is still comfortable when you come back.

In my opinion, it’s not temperature reduction value which is important, but time when comfort setpoint is set back. This restart boiler and then then floor is hot when waking up, which is an added piece of comfort.

What about energy consumption induced by such way of working, is it reducing or increasing consumption ? Unfortunately I have no answer to this question (still), but I can argue for both. I’m then appealing to you to find answers !
Do you have some experiment to share ? Have you already read some posts about this subject ? If yes, please share those information.

The device “comfort setpoint”

The eedomus thermostat doesn’t include multiple setpoints like “Comfort temperature”, “Temperature Eco”. It’s very easy to modify setpoint temperature in rules but the temperature setpoint is described in the rule and can’t be modified directly.

Wishing to have direct access to the “Comfort temperature” setpoint , I added a state device named “Consigne confort RDC” in french. It contains a list of possible values for the desired temperature. This device is added to the one created with the eedomus thermostat, I renamed the last one”Thermostat”. This thermostat has its temperature setpoint that varies throughout the day depending on the period and other factors.


Hourly rules

The built-in eedomus calendar is very convenient to setup hourly rules . Here are the different period I have defined in my side :


Firstly here are the periods that begin at specific hour

  • Evening” (Soirée in french): blinds are closed, some aren’t sleeping
  • Night” (nuit in french): everybody’s sleeping, temperature setpoint is decreased
  • Wake up” (réveil in french): begins very early the morning to warm up the house
  • Presence” : someone’s at home during the day, blinds are opened, comfort temperature is set

Some period aren’t trigger completely or fully by hourly rules but by other particular events :

  • Pyjama”  means we’ve woken up, but we don’t want to fully open blinds. Transition from “Wake up” to “Pyjama” is triggered by human activity detection inside the kitchen.
  • Presence” is triggered manually before hourly rule when we want the blinds to open
  • Absence” is triggered from period “Presence” when there’s no more activity detected in the whole house. Temperature setpoint is slightly decreased.
  • “Evening” is triggered before hourly rule at sunset, then blinds are closing.
  • “Night” is triggered automatically from “Evening” when there’s no more activity detected inside whole house. Temperature’s decreased.
  • Extended absence” is triggered manually when we are absent during several days.

A script to control temperature

Ce script va contrôler la température réglée sur le périphérique “Thermostat” en fonction de la phase et des évènements.
Si on enlève le code permettant de récupérer et agir sur les valeurs des périphériques la programmation est facile à lire en php, en voici un petit extrait :

This script’s setting the temperature setpoint on the device “Thermostat” depending on time and events.
Doing the same job with eedomus rules instead of script is possible, but the full understanding is easier reading php code that manage multiple rules in parallel, here is a small excerpt of the script :

if ($chauffage[‘value’] == 0)
echo ” > Chauffage éteint<br>”;
$settemp = 7;
echo “|-> Chauffage allumé.<br>”;

Entire script can be downloaded through this linkzip. Installation steps are described in the procedure available on the eedomus website.

This script’s using those input data, to be added as arguments in the call :

  • dayphase : it’s API code of “Day Phase” peripheral giving current dayphase
  • consigne (setpoint in english): it’s API code of peripheral “comfort temperature” described above
  • thermostat : API code of peripheral “Thermostat” described before
  • activite (activity in english): it’s API code of “Activity” peripheral. It gives situation of human activity or not in the room.  Values are :

    • 0 means no activity
    • 100 means activity
  • Chauffage (heating in english): it’s API code of peripheral “heating” giving general state of heating system being active or not
    Its possible values are :

    • 0 means “heater is deactivated”
    • 100 means “Heater is active”
    • 200 means “Forced heating”. This is a test mode to force heater to heat up

Executing the temperature control script

Script being saved in eedomus controller, it has to be launched when necessary by some rules.

In order to do so, an http type peripheral have to be creating containing an URL and parameter value matching the script names and corresponding arguments

chaufferdc_http_script chaufferdc_http_valeur

For each argument, replace the blurred values by API code of corresponding peripheral, being for instance :

  • URL : http/localhost/script
  • Type : GET
  • Parameters : ?exec=gestion_chauffage_sam.php&dayphase=12345&consigne=23456&thermostat=34567&chauffage=45678&soleilstatut=56789&activite=67890

We have then to create a rule calling this value and so the script, when there’s some change on one of those peripherals. In my case I have 2 rules :

  • first rule launchs the script for local events inside the room (setpoint, activity,thermostat)
  • second rule launchs the script when common event for every room is happening (dayphase, heating mode, sun)
    In my case this second rules is starting several scripts
    successively for the different rooms thanks to a macro, but it isn’t necessary for a single script.


If you followed all the steps, you now have a programmable thermostat in your eedomus with direct access to comfort temperature setpoint. Although the php script didn’t exist previous winter, my floor heating was already controlled by rules, and no malfunction have appeared. The temperature was also perfectly regulated with the eedomus thermostat using parameters described above.

Those rules have now been removed and replaced by the php script. A script is easy to read and maintain when a working basis is available. Although a script is easier to understand when you want to manage some complex cases. You can find also in this post some way to organize periods of time using in particular eedomus calendar.

I suspect everyone may have different needs, so the script may be fine tuned, I hope this description and script availability may help you. Don’t hesitate to react by leaving a comment, a question or some kind of proposition to improve this post.


Vincent Recipon

Propriétaire de ce blog. Owner of this blog.

You may also like...

7 Responses

  1. Oli says:

    Les chiffres que j’avance sont ceux d’une maisons construite en 2016 en Belgique, ayant un facteur K entre 30 et 35 (proche des maisons zéro énergies). Le chauffage sol repose sur une épaisseur de mousse PUR de 9 cm, et la chape de finition quant à elle fait environ 7 cm. Bref, j’explique cela car j’ai un peu de mal à comprendre pourquoi vous avez consacré autant d’énergie (intellectuelle) à réguler quelque chose qui possède une inertie aussi importante qu’un chauffage sol. Je tiens à préciser aussi que vous avez effectué un sacré travail et rien que pour ça, BRAVO !
    Une question cependant : pour quantifier le gain que cette régulation induit sur la facture, quels sont les éléments qui vous manquent ?

    • La chape et son isolation ressemble beaucoup à la votre, même si je n’ai plus en tête les épaisseurs des différents matériaux. S’agissant d’une chaudière gaz, il faudrait que j’ai accès à la consommation en gaz, la chaudière ne fournit pas d’indication.

  2. Oli says:

    Article intéressant mais dans le cas d’un chauffage sol, la régulation n’est pas appropriée. L’inertie est telle que pour ressentir un degré de différence, il faut multiplier 8h par le nombre de centimètres d’épaisseur de la dalle. En pratique, si elle fait 8 cm,vous devrez attendre 8h avant de ressentir la régulation.
    La chaudière ou PAC propose souvent des programmes qui permettent de palier au périodes de vacances etc.

    • Bonjour, ce commentaire rejoint un autre. Effectivement l’inertie de la dalle est importante, cela ne sert à rien de réduire la température de façon importante (pour l’instant c’est 1°C). Par contre les chiffres que vous donnez ne sont pas ceux que je vois tous les jours. Ma maison est RT2012, l’isolation du plancher et de la maison en général est bonne. En remettant la T° confort à 5h00 j’arrive à la consigne vers 9h00. A 7h00 j’ai 2/10 à 3/10 de moins et avec les activités du matin (grille pain, micro ondes, douche, …) je suis à la température confort vers 8h00. Par ailleurs le plancher est chaud ce qui me semble être aussi important en terme de confort que d’avoir la température confort pile poil.
      Il reste quand même un point c’est la consommation induite par ce fonctionnement jour/nuit; sur ce point je n’ai pas de réponse à apporter.

  3. Fred says:

    bravo super article très bien détaillé
    mais je rejoins le commentaire précédent, du fait de l’énorme inertie l’intérêt de modifier la température d’un chauffage au sol en cours de journée est proche de 0 voir va provoquer une surconsommation inutile.
    Perso je passais ma consigne de 21 à 20 le soir à partir de 23h et jusque 5h du mat’, j’ai vite arrêté quand j’ai vu le temps de fonctionnement de ma chaudière pour rattraper le degré perdu durant la nuit … désormais je ne fais ça que lorsque je m’absente plusieurs jours

    • Votre commentaire est très pertinent. La réduction de température que j’applique dans la nuit est faible : 1°C mais c’est peut être déjà beaucoup. Je vais rajouter cette information dans l’article.
      J’ai fonctionné de cette façon l’hiver dernier. Cela permet en terme de confort d’avoir son plancher chauffant bien chaud en se réveillant, c’est agréable.
      En terme de consommation d’énergie j’avoue avoir du mal à me faire un avis, il est possible que cela ne permette pas de faire d’économie. Je vois effectivement au matin que la pompe fonctionne 2 heures pour remonter la température, mais je ne peux dire ce qu’il en est de la consommation de gaz qui en résulte, la chaudière se mettant en route par intermittence suivant le besoin. Et puis de fait la chaudière fonctionne en régime continu plus longtemps ce qui devrait donc avoir un meilleur rendement. D’un point de vue thermique, il me semble que les pertes sont réduites si on ne chauffe que lorsqu’on en a besoin,même si il faut remonter la température de la dalle, mais il y a d’autres facteurs qui rentrent en compte dans l’équation. Bref difficile de se faire un avis…

      Je n’ai pas accès à la consommation de gaz, ce serait le seul moyen de comparer.
      Quelqu’un a t’il pu réaliser des mesures ? Y a t’il des études avec des résultats tangibles ?

  4. Enr37 says:

    Merci. Intéressant. Ayant moi même un chauffage au sol (mais avec pompe à chaleur air/eau) je me suis posé la question et me suis heurté à plusieurs réflexion
    La 1e et pas des moindres, une PAC propriétaire. Grrrrr.
    La 2e,après analyse, il y a 8h d inertie. Pas besoin de réguler du coup.
    Le pb se pose, lorsque tu pars en vacances. Été (pour rafraichir) ou hiver. Surtout que la pompe ne doit pas être coupée pour geler le fluide. Du coup il y a la possibilité de couper un circuit à l’intérieur avec un qubino mais qui garderait une circulation. Du fait, je pourrais arriver dans une maison chaude ou fraîche. A suivre. Merci encore pour l’article de qualité même s’ils se font rares 🙁

Leave a Reply

Your email address will not be published. Required fields are marked *