Delestage électrique - Dispatch automatique pour chauffage (résolu PyScript)

Bonjour,

je viens de finir mon système de délestage sous HA et je suis ravi de le partager, au cas où d’autres personnes en aurait le besoin. J’ai un peu galéré car j’ai commencé avec les automations de base et ce n’était visiblement pas vraiment possible. Heureusement Pyscript m’a permis de résoudre le problème.
Note: ce même post en disponible en anglais sur le forum de HA.

Le Besoin
Je viens de restaurer un appartement dans un batiment ancien où l’électricité est limitée à 6kW en monophasé. Passer à un contrat supérieur exige de recâbler la colonne commune sur 11 étages (€++€).
L’isolation étant maintenant très bonne, je suis passé en tout électrique.Ce qui est moins cher à installer et à maintenir. Ma consommation globale étant très faible, c’est une solution bien plus rentable que l’ancien chauffage au gaz.
Par contre, mes 7 radiateurs de 1100W, plaque induction, four, bouilloire, machine à laver, … peuvent très facilement dépasser les 6kW et faire sauter mon compteur.
Il me fallait donc une solution de délestage efficace.

** Demo**
J’ai fait une vidéo de démo (en anglais) qui montre bien le fonctionnement du système:
powerLoadBalance-2023-03-15_13.05.34.ogg on Vimeo

Le concept
J’ai écris 2 script utlisant Pyscript see:
Installation — hacs-pyscript 1.3.3 documentation

Le premier (powersavingmode.py) estime la capacité électrique disponible pour le chauffage et gère un indicateur d’économie d’énergie (power_saving indicator) qui varie de 0 (zéro économie) à une limite définie par l’utilisateur.
A chaque mode d’économie correspond un nombre maximum de radiateurs qui peuvent être actifs. Le niveau le plus haut n’autorise aucun radiateur actif.
L’estimation est faite en utilisant l’énergie totale consommée par la maison, dont on déduit l’énergie consommée par les radiateurs actifs. L’estimation est biaisée par les thermostats des radiateurs qui sont hors contrôle de HA. Un radiateur peut être actif et ne pas chauffer (même si la consigne est mise au plus haut). Pour survivre avec une simple estimation, un facteur de sécurité est offert dans la configuration.

Le deuxième script (roundrobin.py) scanne l’indicateur d’économie d’énergie et les radiateurs dont le thermostat demande la mise en marche. Avec cette information, il allume et éteint les radiateurs en respectant la consigne du nombre max de radiateurs actifs. Afin de chauffer toute la maison, malgré la limite du nombre de radiateurs actifs, le script fait tourner l’activation des radiateurs avec un simple Round Robin scan.

Un mode « maison vide » (away_mode) permet d’éteindre simplement le chauffage sans toucher aux autres réglages.
Un service permet d’activer un « boost_mode » pour forcer l’activation d’un radiateur hors du contrôle de son thermostat. Le boost_mode donne priorité lors du round robin scan, mais reste soumis à la règle du nombre max de radiateurs actifs. C’est utile (indispensable) pour mettre un boost mode qui marche dans une salle de bain.

Limitations
Si le facteur de sécurité est trop haut, l’utilisation de toute la puissance pour le chauffage quand il y a peu d’autres consommateurs ne sera jamais atteinte. Si ce facteur est trop faible, les voyages au disjoncteur dans le noir seront fréquents. Le log et une state variable de reporting sont là pour vous aider à trouver le bon compromis.
La bonne nouvelle est que plus le niveau d’économie d’énergie augmente, plus l’estimation est fiable. Ce qui fait que la résistance au pic de courant est plutôt bonne.
Un système d’amortissement des changements (smooting) est inclus dans le code pour limiter l’usure des relais électromagnétiques. En cas configuration 100% électronique, l’amortissement peut être désactivé. Durant les phases de tests, il peut être pratique de réduire le smoothing et le stepping, comme je l’ai fait pour ma vidéo de démo.

Le temps de réaction est critique. En pratique il faut corriger la consommation dans la seconde (2/3 max). Ceci impose d’avoir une lecture directe de la consommation de la maison. Les solutions basées sur la collecte de la consommation par le fournisseur via internet ne peuvent pas être assez rapides.

Jouer avec le feu
Le système travaille avec des fortes puissance et doit être faible au niveau électrique. De tels niveaux mals gérés peuvent mettre le feu en quelques minutes.
Il est bien plus sûr de contrôler les radiateurs via le fil pilote ou une interface radio. Le fil pilote est une solution simple et bon marché qui est disponible sur tous les radiateurs depuis des années. La réaction du radiateur à la demande de réduction de consommation doit être rapide. J’ai préféré utiliser une diode pour pouvoir forcer un power-off plutôt qu’une simple mise en mode confort. Tant que votre radiateur répond dans la seconde, vous êtes bon.

Note: Il est pratique (et utile) d’alimenter votre HA et le pilotage en secouru quand vous jouer à la limite de dijoncter. N’oubliez pas que le fil pilote lui doit être sur le même circuit que la puissance du chauffage car ils partagent leurs neutre.

Le code
Le code est disponible sous licence Apache V2 on github.

Bug et demande d’amélioration
Merci de passer par github

Mon Hardware


Note: Le modèle noir est celui qui fait les mesures.

2 « J'aime »

Hello

merci pour le partage :grinning:

Sympa comme idée et réalisation.

Par contre, personnellement, je serait plutôt partie sur un emporia vue2 comme matériel qui a le gros avantage d’avoir beaucoup de pince ampèremétrique et du coup, tu pourrais savoir ta consommation global mais aussi de tous tes radiateurs en même temps et aussi d’autres équipement en même temps.

De plus, il est possible (et facilement) de le flasher en esphome pour qu’il fonctionne en local ( GitHub - emporia-vue-local/esphome: Custom component for ESPHome to add support for the Emporia Vue 2 energy monitor ).

Ainsi, quand il est en local, on peut avoir un point de mesure tous les 0,24 secondes. Et par défaut, il envoie les données tous les 1.44 secondes, linéariser sur les 2.88 derniers secondes mais c’est, bien sur, paramétrables. Il est donc parfait pour ce type de besoin a mon avis.

1 « J'aime »

C’est en effet un système qui semble très intéressant. Je ne le connaissait pas.
Il permettrait de faire une estimation plus précise de l’énergie disponible restante et le câblage est plus facile à adapter sur un coffret où il n’y a plus de place sur les rails DIN. Par contre elle ne permet pas de couper les consommateurs à distance.
Ce que je fais avec ma machine à laver et mon lave vaisselle que j’ai programmé pour un usage exclusif.
La solution que j’ai retenue est propre et simple à mettre en place. Elle ne fait pas peur en cas de contrôle électrique car il n’y a pas de fils partout. Mais elle n’est pas forcement meilleure.

  • 1 seul équipement requis
  • montage directement sur rail DIN du coffret.
  • pas flashage requis
  • un peu moins chère (pas significativement)
  • permet de télécommander une coupure si besoin

L’autre méthode est une lecture directe du compteur électrique mais dans mon immeuble ce n’était pas pratique car les compteurs sont dans les communs.

Comme je le dis dans mon post, la précision s’améliore avec le niveau de consommation électrique, ce qui fait que la précision n’est pas critique (un effet de bord sympathique que je n’avais pas prévu). Par contre votre equipement permettrait d’avoir plus d’énergie attribuée pour le chauffage dans les phases de consommation intermédiaires.

Je verrai pour faire une version de mon code qui supporte une estimation par la mesure du courant utilisé hors chauffage dans un futur proche. C’est une alternative plutôt simple à coder.

Kenavo.