Gestion optimisée du chauffage dans home assistant

Gestion optimisée du chauffage dans home assistant
Spread the love

La maison compte quatre chauffages électriques. Deux d’entre eux sont reliés à Home Assistant via des modules Zigbee achetés chez Leroy Merlin, tandis que celui du salon passe par la plateforme Enki — ce qui complique un peu l’intégration (j’y reviendrai plus loin). Quant à celui de la salle de bain, il n’est pas connecté, donc inutile de s’y attarder.

Le chauffage du salon

Le chauffage du salon était déjà connecté à son achat. Il fonctionne avec un protocole assez peu répandu : Enocean. Je sais qu’il existe des moyens d’intégrer ce protocole à Home Assistant, mais la mise en place m’a semblé un peu trop complexe. J’ai donc choisi une autre approche, plus simple et efficace.

J’ai commencé par créer deux scènes dans Enki : l’une pour allumer le chauffage, l’autre pour l’éteindre.


Ensuite, j’ai configuré deux routines Alexa, chacune associée à l’une de ces scènes.


Enfin, j’ai ajouté dans Home Assistant les éléments nécessaires pour piloter le tout :

  1. deux scripts destinés à exécuter les routines Alexa (l’une pour l’allumage, l’autre pour l’arrêt).
  1. un switch pour gérer l’allumage et l’arrêt du chauffage (input boolean géré via les entrées)
  2. un thermostat virtuel pour contrôler la température de consigne,

Le principe est le suivant :

  • Quand le thermostat virtuel passe en mode heat, une automatisation déclenche la routine Alexa qui allume le chauffage.
  • Lorsqu’il passe en mode idle ou off, une autre automatisation déclenche la routine Alexa qui l’éteint

Cette méthode me permet donc de piloter le chauffage depuis Home Assistant, même sans module Enocean compatible.
Le principal inconvénient, c’est de devoir passer par Enki + Alexa, surtout Enki, puisque cela nécessite un hub supplémentaire.

Mais cette configuration m’a tout de même permis une amélioration majeure : je peux désormais déporter la sonde de température.
En effet, la sonde intégrée au radiateur donnait des valeurs totalement incohérentes.
Désormais, la consigne côté Enki est fixée à 23°C, ce qui empêche le radiateur de s’arrêter prématurément, tandis que Home Assistant gère réellement la température ambiante.
Ainsi, dès que la pièce dépasse 19 ou 20°C (selon la consigne du thermostat virtuel), le chauffage passe automatiquement en mode hors gel.

Je reviendrai sur la Gestion au quotidien du chauffage dans une autre partie de l’article.

Le chauffage des chambres

L’approche a été différente pour les chauffages des chambres.
À l’origine, il s’agissait de radiateurs à inertie bain d’huile, non connectés. La gestion via le programmateur intégré s’est vite révélée peu pratique — surtout avec un abonnement EDF Tempo, où la température doit s’adapter selon la couleur du jour.
Pour simplifier tout ça, nous avons donc installé des modules Zigbee de chez Leroy Merlin, ce qui permet désormais une intégration complète dans Home Assistant et un pilotage automatique en fonction des jours bleus, blancs ou rouges.

Pour les chambres, je souhaitais utiliser un thermostat physique plutôt qu’un virtuel, afin que mes filles puissent régler leur chauffage simplement, sans avoir à passer par l’interface de Home Assistant.
Je me suis donc procuré deux thermostats MOES Zigbee, modèle ZHT-S03. Ces thermostats offrent une bonne compatibilité avec Home Assistant et permettent de gérer la température directement depuis leur écran tactile, tout en restant intégrés au système domotique.

Ce thermostat apparaît dans Home Assistant et se gère exactement comme un thermostat virtuel.
Pour qu’il puisse activer ou désactiver le chauffage selon la consigne, j’ai simplement créé deux automatisations par radiateur :

  • l’une qui met le switch du chauffage sur “on” lorsque le thermostat passe en mode chauffage,
  • et l’autre qui le met sur “off” lorsque le thermostat est au repos.

Une méthode simple, mais très efficace, qui permet de conserver un contrôle local et intuitif tout en gardant la main depuis Home Assistant.

Grâce à cette configuration, le chauffage peut désormais être contrôlé aussi bien depuis Home Assistant que directement via le thermostat physique.
Cela offre une double souplesse d’utilisation : mes filles peuvent ajuster la température manuellement dans leur chambre, tandis que le système reste pleinement automatisé et synchronisé avec l’ensemble de la maison.

Planification du chauffage

Pour planifier le chauffage, j’utilise la carte Scheduler-Card ainsi que son composant associé, tous deux disponibles via HACS.
Cette combinaison permet de créer facilement des plannings personnalisés directement depuis l’interface de Home Assistant, sans avoir à passer par des automatisations complexes.

Github de la carte : ICI

Github du composant : ICI

Les deux éléments — la carte Scheduler-Card et le composant Scheduler — sont indispensables pour que la planification fonctionne correctement.

Ensuite, j’ai créé une entrée template dans Home Assistant afin de gérer deux types de planification distincts :

  • une pour les jours bleus et blancs,
  • et une autre pour les jours rouges.

Cette séparation permet d’adapter automatiquement le fonctionnement du chauffage selon la couleur du jour Tempo, sans avoir à intervenir manuellement.

Ensuite j’ai ajouté la carte scheduler à mon tableau de bord home assistant.

Pour les jours bleus et blancs :

Pour les jours rouges :

Il est possible de gérer les conditions directement dans la carte Scheduler, mais j’ai préféré ne pas le faire : voir les deux plannings actifs en même temps me paraissait peu lisible.

À la place, j’ai créé une automatisation dans Home Assistant qui se charge d’activer ou de désactiver les plannings en fonction de la couleur du jour Tempo.
Ainsi, seul le planning correspondant au jour en cours (bleu, blanc ou rouge) reste actif, ce qui rend l’interface plus claire et la gestion plus fiable.

J’ai également mis en place une seconde automatisation qui active automatiquement le planning “jour rouge” pendant la nuit, lorsque la couleur du lendemain est annoncée comme rouge.
L’idée est de chauffer un peu plus la maison avant le début d’une journée rouge, afin d’anticiper la limitation de chauffage prévue pour ces journées à tarif élevé.

La carte Scheduler offre de nombreuses possibilités de personnalisation pour affiner la planification selon ses besoins.
Je vous laisse explorer toutes ses options dans la documentation officielle, qui détaille très bien les différentes fonctions disponibles.

Les cartes thermostats personnalisées

J’ai mis un certain temps à trouver des cartes thermostat qui me convenaient. Il en existe de très esthétiques, mais je cherchais quelque chose de plus sobre et compact, sans occuper trop d’espace visuel sur le tableau de bord.
J’ai donc opté pour la Mushroom Climate Card, que j’ai ensuite personnalisée selon mes besoins pour obtenir le rendu idéal.

L’idée, c’était de pouvoir identifier en un coup d’œil l’état de chaque radiateur.
J’ai donc mis en place un code couleur simple et intuitif :

  • 🔴 Rouge : la chauffe est en cours,
  • 🔵 Bleu : le chauffage est allumé mais inactif,
  • Noir : le chauffage est éteint.

En complément, l’en-tête de la carte affiche également le nombre de chauffages actuellement en chauffe, ce qui permet d’avoir une vue d’ensemble rapide et visuelle du système.

Voici le code YAML des différents éléments :

  • Le nombre de chauffages en chauffe

Il s’agit d’un capteur de type template avec le code suivant :

{% set chauffages = expand(states.sensor.etat_chauffage_salon, states.sensor.etat_chauffage_lucie, states.sensor.etat_chauffage_chloe,) %}
{% if  chauffages | selectattr('state','match','heating') | list | count ==0 %}
 Pas de Chauffage allumé
{%elif chauffages | selectattr('state','match','heating') | list | count >1 %} 
{{eclairages | selectattr('state','match','heating') | list | count}} chauffages allumés
 {%else%} {{chauffages | selectattr('state','match','heating') | list | count}} chauffage allumé
 {%endif%}
  • La carte climate :

J’utilise la carte standard personnalisée avec du card mod (que l’on trouve dans hacs)

  - type: custom:mushroom-climate-card
    entity: climate.chauffage_chambre_chloe
    fill_container: true
    show_temperature_control: true
    collapsible_controls: true
    hvac_modes:
      - heat
      - "off"
    name: Chloé
    primary_info: name
    secondary_info: state
    icon: mdi:radiator
    tap_action:
      action: toggle
    grid_options:
      columns: 12
      rows: 1
    layout: vertical
    card_mod:
      style:
        .: |
          ha-card {
            --ha-card-border-width: 0;
             --card-primary-font-size: 18px;
             --card-secondary-font-size: 15px;
            {% if states('climate.chauffage_chambre_chloe')=='off'%}
            {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='idle'%}
             background: linear-gradient(to right, rgb(184,195,254), rgb(48,79,252));
             {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='heating'%}
             background: linear-gradient(to right, rgb(255,138,92), rgb(209,59,0));
             {% endif %};
           }
          ha-state-icon {
          color: white;
          }
          mushroom-badge-icon {
            --badge-icon-size: 20px;
          }
        mushroom-climate-temperature-control$:
          mushroom-input-number$: |
            #container .button:nth-child(1) {
              height: 30px !important;
              width: 30px !important;
              {% if states('climate.chauffage_chambre_chloe')=='off'%}
              {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='idle'%}
             background: #6368F8;
             {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='heating'%}
             background: #701705;
             {% endif %};

            }
            #container .button:nth-child(3) {
              height: 30px !important;
              width: 30px !important;
              {% if states('climate.chauffage_chambre_chloe')=='off'%}
              {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='idle'%}
             background: #6368F8;
             {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='heating'%}
             background: #701705;
             {% endif %};

            }
        mushroom-shape-icon$: |
          .shape {
            {% if states('climate.chauffage_chambre_chloe')=='off'%}
            {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='idle'%}
            --shape-color: #6368F8 !important;
            {% elif state_attr('climate.chauffage_chambre_chloe','hvac_action')=='heating'%}
            --shape-color: #701705 !important;
            {%endif%}
          }

Conclusion

Mettre en place une gestion complète du chauffage sous Home Assistant m’a demandé un peu de temps, d’expérimentation et quelques ajustements, mais le résultat en vaut largement la peine.
Aujourd’hui, le système est entièrement automatisé, tout en restant souple et personnalisable : chacun peut ajuster la température à sa façon, tout en profitant d’une logique globale adaptée aux jours Tempo et aux besoins réels de la maison.

L’intégration de solutions variées — Enki, Zigbee, thermostats MOES, scheduler-card, scènes et automatisations — montre qu’il est possible de créer une installation cohérente et fiable, même à partir d’équipements hétérogènes.
C’est ce que j’aime avec Home Assistant : la liberté d’adapter la domotique à son quotidien, plutôt que l’inverse.

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *