Home Assistant & Thermostats

Sous Home Assistant le thermostat de base (climate:) est plutôt "basic", et c'est le moins que l'on puisse dire ! Fort heureusement il y a des personnes géniales qui savent coder et se sont attelées à le modifier.

Simple Thermostat

Ce premier fork reprend simplement le thermostat de base en y ajoutant les "presets" que tout le monde attendait. En gros il y a deux façons d'utiliser un thermostat, soit on modifie dynamiquement la valeur de consigne avec des automations, le Scheduler ou Schedy et c'est ce que je fais, soit on joue la carte des presets à la française avec des modes ECO, CONFORT, Etc.. Et c'est ce que fait Simple Thermostat de façon très simple. Par exemple si on se positionne en BOOST et que l'on lui indique une consigne de 22°, il la gardera en mémoire. Ensuite on pourra rappeler le preset avec une automation

service: climate.set_preset_mode
target:
  entity_id: climate.thermostat_lionel
data:
  preset_mode: boost

Ou encore via l'interface :

EDIT 04/02/2022 : à partir de la version 2022-02 le thermostat générique de base évolue. Il est maintenant possible de définir des préréglages et de les rappeler via un service. Peut être pas aussi smart que Simple Thermostat, mais ça a le mérite d'être intégré dans le core et de ne pas faire appel à un composant externe qui peut toujours être délaissé par son développeur :

climate:
  - platform: generic_thermostat
    name: "Thermostat : Hall"
    heater: switch.sw03_hall
    target_sensor: sensor.rpi_mi_t_hall
    min_temp: 12
    max_temp: 24
    ac_mode: false
    cold_tolerance: 0.3
    hot_tolerance: 0
    min_cycle_duration:
      seconds: 360
    keep_alive:
      minutes: 3
    away_temp: 10
    comfort_temp: 20
    home_temp: 21
    sleep_temp: 18
    activity_temp: 19
    precision: 0.1

Smart Thermostat

On est ici face à un thermostat intelligent (j'ai pas non plus dit AI !) qui se base sur un contrôleur PID afin de déterminer la période pendant laquelle le convecteur devra être ON afin de profiter de l'inertie de celui ci. Le capteur cible mesure la température ambiante tandis que l'interrupteur contrôle un système de chauffage ON/OFF. Le contrôleur PID calcule la durée pendant laquelle le convecteur doit rester allumé pendant la période PWM pour atteindre le point de consigne, par exemple avec PWM réglé sur 15 minutes, si la sortie est de 100 %, le réchauffeur restera allumé pendant les 15 prochaines minutes. Si la sortie PID est de 33 %, le réchauffeur sera allumé pendant 5 minutes seulement.

Vous n'avez pas tout compris ? J'avoue que moi non plus. Mais le fait est que ça fonctionne, et d'ailleurs pour preuve en voici la formule :

Plus sérieusement, ce système sera plus particulièrement efficace avec des convecteurs (ou un autre système de chauffage) avec une forte inertie. Donc exit les convecteurs du genre grille pain...

Pour ceux qui aimerait en savoir plus je vous conseille la lecture du projet ou le mainteneur nous donne pas mal d'explications ainsi que quelques liens :

Ensuite voici la configuration type. On notera qu'ici l'idée des presets est reprise, mais qu'il faut les figer dans la configuration alors qu'ils sont dynamiques dans Simple Thermostat (Adrien si tu nous suit..).

climate:
  - platform: smart_thermostat
    name: "Thermostat : Lionel"
    heater: switch.sw01_lionel
    target_sensor: sensor.mi_lionel_temp
    min_temp: 10
    max_temp: 26
    ac_mode: False
    target_temp: 19
    keep_alive:
      seconds: 60
    precision: 0.1
    away_temp: 14
    eco_temp: 18
    boost_temp: 22
    comfort_temp: 20
    home_temp: 21
    sleep_temp: 17
    activity_temp: 20
    kp : 75
    ki : 0.001
    kd : 70000
    pwm : 00:15:00

Bien sur ces réglages sont à affiner en fonction du convecteur et de la pièce à chauffer. Pour cela il existe un mode AutoTune :

    autotune: "ciancone-marlin"

Dixit son auteur ce mode n'est pas encore tout à fait sur. J'y reviendrait donc plus tard au fil de mes tests.

En attendant on peu constater que là ou le convecteur aurait été ON jusqu'à attendre la température de consigne avec le thermostat standard (la première ligne), il y a eu plusieurs interruptions avec ce thermostat (la seconde ligne). Et  vous l'aurez compris, plus les interruptions sont importantes, moins la consommation le sera, et la facture d'autant plus réduite.

Multizone Thermostat

Il existe une autre variante qui intègre ces différents modes et bien qu'utilisable par zones indépendantes permet en plus d'ajuster la température voulue sur plusieurs zones adjacentes. Je vous laisse lire la description compète sur son Git, je l'ai quand à moi installé dans mon bureau afin d'essayer de déterminer que mode sera le plus adapté entre cout et confort. et je verrais dans quelques jours si le résultat est probant.

Il propose plusieurs modes de fonctionnement :

  • ON/OFF : proche du thermostat de base mais en prenant compte des valeurs d'hystérésis. Dans ce mode il peut également gérer les modes chauffage et refroidissement.
  • Proportionnel : PID avec possibilité de compensation météo et gestion de plusieurs valves. Les possibilité sont énormes mais la mise au point sera délicate.

Autres

Ici on va trouver une autre approche que je n'ai pas explorée.

Conclusion

Ces thermostats évolués sont très intéressants sur le papier et remplacent avantageusement le thermostat de base en fonction des besoins. Par contre ils restent encore complexes à mettre au point et il faudra peut être tout l'hiver pour en tirer des conclusions...

J'y reviendrais dans les prochains jours, mais ces deux approches constituent une avancée importante pour Home Assistant et j'espère que tout cela sera un jour intégré au Core.

Echanger

Voici deux fils ou échanger sur ce sujet :

 

Commentaires (20) -

  • Pour moi, le truc qui fonctionne le mieux pour les thermostats dans Home Assistant, c est d utiliser Jeedom avec le plugin thermostat 😅

    C est un peu lourd a mettre en place (MQTT pour faire la liaison Jeedom / HA) mais ça fonctionne très bien et pour le moment je ne trouve vraiment pas les projets HA au niveau
    • On regrette tous le thermostat de Jeedom. Mais l'idée n'étant pas d'entretenir deux systèmes, et c'est pourquoi je teste ces solutions (en attendant que le développeur du thermostat Jeedom ait la bonne idée de  le porter sur Home Assistant, on peut toujours rêver...).
      • J'ai l'impression que sur celui "PID", il ne manque finalement plus que la partie "sonde extérieur" pour avoir un équivalent Jeedom.

        Après pour ma part, le double système je m'en accommode par rapport aux économies :)
        • Je suis en train de tester le troisième qui me semble tout avoir.
          • Alors après quelques jours ? :)

            Vais tester sur une pièce le "Linear mode (weather compensating)", il faut juste que je creuse la partie "weather_mode:  ka: 2   kb: -6" ..
  • Hello,
    Mêmes interrogations, même problématique...
    Je suis encore sur Jeedom mais que pour le chauffage, thermostat et agenda sont terriblement simples à paramétrer. Pour le reste c'est cata, jeedom. Aucune fiabilité ... Ca marche un jour, ça bloque un autre... Combien de matins je me lève avec la maison froide parce que le plugin zwave s'est bloqué...
    Bref. Pas ici pour parler ce ça mais pour dire que, Lionel, je suis tes écrits (géniaux car toujours complets et fonctionnels)  très attentivement car je cherche désespérément un système de thermostat aussi bon sur HA avant de quitter définitivement jeedom.
    Merci du travail que tu fais, sincèrement, merci...
    • Merci ;-)
      Je pense qu'avec ces nouveaux thermostats la situation va évoluer. Reste que ce n'est pas simple à mettre au point et à trouver les bonnes valeurs....
  • Merci pour cet embryon de conclusion sur la gestion du chauffage...
    Débutant sous HA, j'avoue que j'ai perdu pas mal de temps à faire un choix de stratégie ! Ce qui me rassure, c'est que la lecture de tes posts me montre que je ne suis pas le seul à errer !
    Entre le PID d'Argonaute, très complet mais complexe à mettre en œuvre pour un débutant et le thermostat très basique intégré, il y a un gouffre !
    Je m'oriente vers le "simple thermostat" de Dadge avec une carte Lovelace "Simple thermostat" (aussi) de Nervetattoo et l'utilisation du Scheduler. C'est probablement le plus simple moyen d'avoir un truc qui marche rapidement sans trop de prises de tête...
    • Simple Thermostat et le Scheduller me paraissent un bon choix pour débuter, tu pourras tj y revenir plus tard, tout ne se fait pas en un jour...
  • Bonjour,  est-ce que tu as eu l'occasion d'évaluer celui-ci  :  https://community.home-assistant.io/t/multizone-thermostat-incl-various-control-options/308898/22  ?  
    • C'est le troisième dont je parle, non ? J'en ai un en test, mais j'ai aussi un réversible que je privilégie, don les thermostats ne bougent pas trop ces jours ci...
  • Hello,
    Je viens de recevoir mes trois ZBMINI et mes diodes pour la commande du fil pilote. J'attends avec impatience le résultat de tes tests.
    A+
  • Bonjour,
    J'utilise home assistant pour mon chauffage électrique depuis peu.
    Je mute progressivement mon chauffage à partir de 2 Veralite qui fonctionnent encore très bien mais je voulais utiliser le Zigbee pour les sondes à la place des Orégon.
    J'ai commencé mes intégrations avec "généric_thermostat" mais j'ai une pièce avec 2 fils pilote (3 radiateurs).
    Je bute pour intégrer 2 heater dans un thermostat.
    Merci pour votre aide et votre site.
    • En fait c'est si vos radiateurs sont vus comme des switchs il suffit de faire un groupe, c'est ce que j'ai fait pour le séjour :
      convecteurs_sejour:
          name: Séjour
          entities:
            - switch.sw13_sejour_1
            - switch.sw10_sejour_2

      Autre solution si les fils pilote remontent au tableau on peu n'en faire qu'un qui va vers les 3 convecteurs. Il est également possible de faire un fake switch qui lancerait un script...
      • Merci pour votre réponse,
        J'espérais sur la même ligne pouvoir placer mes 2 light

          # Thermostat Sejour-SaM #
        - platform: generic_thermostat
          # Nom de notre thermostat
          name: Chauffage Sejour-SaM
          # entité du chauffage
          heater: light.fil_pilote_sejour_29
          # entité du capteur de température
          target_sensor: sensor.sonoff_a48001fffd_temperature

        Bonne soirée
        • Tu dois pouvoir faire un fake switch avec cet exemple :

          - platform: template # switch.shelly_shsw_1_f39b46
            switches:
              pilot_wire_1:
                friendly_name: 'Convecteur : Salle de Bain'
                value_template: "{{ is_state('switch.shelly1_f39b46', 'off') }}" # fake switch is on when real switch reports off, and vice versa
                turn_on:
                  service: switch.turn_off
                  data:
                    entity_id: switch.shelly1_f39b46
                turn_off:
                  service: switch.turn_on
                  data:
                    entity_id: switch.shelly1_f39b46
        • Désolé pour le formatage mais avec un c/c dans un éditeur l'indentation doit être bonne.
        • - platform: template
            switches:
              pilot_wire_1:
                friendly_name: 'Convecteur : Salle de Bain'
                value_template: "{{ is_state('light.fil_pilote_sejour_29', 'off') }}"
                turn_on:
                  service: light.turn_off
                  data:
                    entity_id: light.fil_pilote_sejour_29
                turn_off:
                  service: light.turn_on
                  data:
                    entity_id: light.fil_pilote_sejour_29
  • Bonjour Lionel,

    Tout d'abord je tenais à te dire un grand merci pour tous tes tutos qui m'ont grandement aidé pour mon HA.
    J'ai un tout petit problème que j'arrive pas à résoudre...
    Je gère mon chauffage avec un custom:simple-thermostat + scheduler avec planification des presets (away, eco, comfort, boost) + input_number pour définir via lovelace la température des presets + automatisation avec call_service pour mettre à jour les températures des presets.
    Tout marche parfaitement, sauf un petit détail dont voici un exemple:
    Je change la température de l'input_number.consigne_eco, l'automatisation se déclenche bien et change la température du preset Eco, mais mon thermostat qui est réglé sur Eco ne prend pas en compte la nouvelle température. Il la prend en compte si je fais off/on sur la planification, ou si j'appuie manuellement sur le bouton Eco du thermostat.
    Une idée?

Ajouter un commentaire

Loading