Vos panneaux solaires produisent de l'énergie que vous réinjectez au réseau à environ 0,04-0,05 €/kWh (tarif OA surplus 2026, installations < 9 kWc) alors que vous l'achetez à plus de 0,22 €/kWh. Un routeur solaire DIY résout ce problème en redirigeant le surplus vers votre chauffe-eau — pour un coût de montage d'environ 25 € et une économie potentielle de 100 à 200 € par an.

Ce guide couvre l'approche la plus accessible : le routeur ON/OFF par relais SSR (Solid State Relay). Moins optimal énergétiquement qu'un triac, mais beaucoup plus simple à monter, plus fiable à long terme, et largement suffisant pour la grande majorité des installations domestiques avec un chauffe-eau ECS de 2 à 3 kW.

Il s'appuie sur le projet open-source Solar-Router-for-ESPHome de Xavier Berger — le plus complet et le mieux maintenu de l'écosystème ESPHome pour ce cas d'usage. La documentation officielle est en anglais : ce guide en est l'adaptation française complète, avec câblage, YAML et intégration Home Assistant.

Qu'est-ce qu'un routeur solaire et pourquoi le faire soi-même ?

Un routeur solaire surveille en temps réel la puissance échangée entre votre installation et le réseau EDF. Dès qu'il détecte un surplus — vos panneaux produisent plus que ce que vous consommez — il active une charge locale pour absorber cet excédent plutôt que de l'injecter gratuitement.

Le chauffe-eau électrique est la cible idéale : sa résistance chauffante est une charge purement résistive, elle supporte les allumages et extinctions répétés sans dommage, et chauffer l'eau est toujours utile. Au lieu d'injecter 2 kW au réseau à 0,04 €/kWh, vous les consommez localement à coût marginal nul.

Calcul du gain potentiel

Un chauffe-eau ECS de 200 litres consomme entre 1 200 et 2 000 kWh par an selon les habitudes et l'isolation. Avec une installation solaire de 3 kWc en France métropolitaine, un routeur bien calibré peut couvrir 50 à 60% de ce besoin par le surplus. Soit entre 130 et 220 € d'économies annuelles selon votre tarif actuel.

Les routeurs commerciaux (Shelly Pro 4PM en mode surplus, Legrand, or-watt.fr…) remplissent ce rôle, mais à un prix de 80 à 250 €, souvent avec une dépendance cloud et sans intégration fine à Home Assistant. La version DIY coûte 25 €, fonctionne entièrement en local, et expose des entités HA natives dès le premier démarrage.

Relais SSR ou triac : quelle approche choisir ?

Deux architectures permettent de piloter la charge. Comprendre leur différence aide à choisir ce qui correspond à votre installation.

Relais SSR (ON/OFF) — l'approche de ce guide

Un SSR (Solid State Relay) commute 230V AC depuis un signal GPIO 3,3V de l'ESP32. Il fonctionne en tout-ou-rien : soit le chauffe-eau reçoit 100% de la puissance nominale, soit 0%.

  • Avantages : câblage simple, composant très fiable, pas d'interférences électromagnétiques, peu de chaleur dégagée, impossible à endommager par une erreur de logique
  • Inconvénients : logique binaire — si le surplus est de 800W et que le chauffe-eau consomme 2 400W, vous choisissez entre laisser partir 800W au réseau ou tirer 1 600W du réseau
  • Idéal si : votre installation produit souvent soit très peu, soit beaucoup (panneaux bien dimensionnés). Convient à 80% des installations résidentielles standard.

Triac / gradateur AC (régulation progressive)

Le triac envoie de 0 à 100% de la puissance à la charge en ajustant le point de déclenchement dans chaque demi-période du secteur. Si le surplus est de 800W, le chauffe-eau consomme exactement 800W — zéro injection, zéro consommation réseau.

  • Avantages : optimisation énergétique quasi-parfaite sur toute la plage de surplus
  • Inconvénients : génère des perturbations électromagnétiques (nécessite un filtre secteur), montage plus complexe, composant plus sensible aux surtensions
  • Idéal si : grande installation avec des surplus variables tout au long de la journée, et que vous êtes à l'aise avec l'électronique de puissance

Le projet Solar-Router-for-ESPHome supporte les deux régulateurs. Si vous débutez, commencez par le SSR — vous pourrez migrer vers le triac en changeant uniquement quelques lignes de YAML et le câblage côté charge.

Composants nécessaires et budget

ComposantRôlePrix indicatif
ESP32 DevKit v1Microcontrôleur ESPHome~5 €
Relais SSR 40A (ex: Heschen SSR-40DA — input 4-32V DC, output 24-480V AC)Commutation 230V chauffe-eau~13 €
Module PZEM-004T v3.0Mesure puissance AC réseau (tension, courant, énergie)~22 €
Boîtier DIN rail ou boîte étanche IP44Protection 230V~5 €
Câbles, dominos, visserieCâblage~3 €

Budget total : 45 à 50 €, hors câble USB d'alimentation de l'ESP32 (réutiliser un chargeur 5V existant). Si vous disposez déjà d'un Shelly EM ou d'un adaptateur Teleinfo Linky, vous supprimez le PZEM-004T — le budget descend à 25 €.

Rapport qualité-prix
ELEGOO ESP32 DevKit (pack de 2)

ELEGOO ESP32 DevKit (pack de 2)

Pack de 2 cartes · USB-C · CP2102 · Dual core 240 MHz · WiFi + BT 4.2

Voir sur Amazon Livraison Prime · ~9€/unité
Meilleur choix
Heschen SSR-40DA 40A DC/AC

Heschen SSR-40DA 40A DC/AC

Entrée 4-32V DC · Sortie 24-480V AC · 40A 50/60Hz · Certifié CE

Voir sur Amazon Livraison Prime · Choix Amazon · 417 avis 4,4★

Schéma de câblage

Côté bas voltage (ESP32 3,3V)

  • GPIO 4 → borne DC+ du SSR (signal de commande)
  • GND → borne DC- du SSR
  • GPIO 16 (RX2) et GPIO 17 (TX2) → PZEM-004T (TX du PZEM sur RX2, RX du PZEM sur TX2)
  • 5V → VCC du module PZEM-004T (il nécessite du 5V, pas du 3,3V)
  • GND → GND du module PZEM-004T

Le module PZEM-004T intègre son propre transformateur de courant (pince de mesure incluse dans certains bundles) et mesure directement la puissance AC avec tension, courant, énergie et facteur de puissance. C'est un capteur AC complet qui communique en UART avec l'ESP32.

Côté 230V (SSR + PZEM + chauffe-eau)

  • La phase du circuit chauffe-eau entre dans la borne AC1 du SSR
  • La sortie AC2 du SSR part vers la résistance chauffante du chauffe-eau
  • Le neutre passe directement au chauffe-eau, sans traverser le SSR
  • La phase principale du tableau passe dans la pince de courant du PZEM-004T (le câble de la phase s'insère dans le tore — non-intrusif, pas besoin de couper)
  • Les bornes AC du PZEM-004T (mesure tension) se connectent entre la phase et le neutre au niveau du tableau

Dimensionnement du SSR et refroidissement

Un chauffe-eau de 2 400W sur 230V tire environ 10,4A. Un SSR 40A offre une marge de 4x — c'est le minimum conseillé. Le Heschen SSR-40DA est fiable, certifié CE et bien distribué. Son entrée de commande est spécifiée à 4-32V DC : le GPIO 3,3V de l'ESP32 fonctionne en pratique sur la majorité des exemplaires (l'optocoupler interne décroche dès ~3V), mais si vous souhaitez plus de marge, intercalez une résistance 1kΩ sur la broche 5V du DevKit. Vissez le SSR sur un petit radiateur aluminium : la dissipation thermique en commutation répétée peut le détériorer sans refroidissement.

Configuration ESPHome avec Solar-Router-for-ESPHome

Plutôt que d'écrire la logique de routage de zéro, ce guide s'appuie sur le package Solar-Router-for-ESPHome de Xavier Berger (GitHub : XavierBerger/Solar-Router-for-ESPHome). Il propose des packages YAML modulaires — un pour la source de mesure, un pour le type de régulateur, un pour la stratégie (ON/OFF ou progressive) — que vous assemblez comme des briques.

Fichier de configuration complet

Créez un nouveau device ESPHome dans votre interface Home Assistant, nommez-le routeur-solaire, puis remplacez la configuration générée par celle-ci :

substitutions:
  name: routeur-solaire
  friendly_name: "Routeur Solaire"

packages:
  solar_router:
    url: https://github.com/XavierBerger/Solar-Router-for-ESPHome
    ref: main
    files:
      - packages/power_meter/power_meter_pzem.yaml
      - packages/regulator/regulator_mecanical_relay.yaml
      - packages/engine/engine_1switch.yaml

esphome:
  name: ${name}
  friendly_name: ${friendly_name}

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:

api:
  encryption:
    key: !secret api_encryption_key

ota:
  - platform: esphome
    password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

uart:
  rx_pin: GPIO16
  tx_pin: GPIO17
  baud_rate: 9600

output:
  - platform: gpio
    pin: GPIO4
    id: relay_output

Les trois packages injectent automatiquement tous les composants nécessaires : lecture PZEM-004T via UART, logique de seuils, entité switch pour le SSR, et les paramètres de configuration exposés dans HA.

Vérification de la mesure PZEM-004T

Le PZEM-004T est un capteur AC calibré en usine — pas besoin de paramétrer une résistance shunt ou un ratio de transformation. Après le premier démarrage, ouvrez les logs ESPHome et vérifiez que les valeurs remontent correctement (tension ~230V, courant en ampères, puissance en watts).

Comparez la valeur sensor.routeur_solaire_power_import avec votre compteur Linky ou un wattmètre clamp de référence. Si vous observez un écart supérieur à 5%, vérifiez que la pince de courant est bien fermée autour du seul conducteur de phase (pas du neutre) et que le câble traversant la pince ne forme pas de boucle.

Module PZEM-004T v3.0 100A

Module PZEM-004T v3.0 100A

Capteur AC 80-260V · Courant, tension, puissance, énergie · UART 9600 · CT 100A incluse

Voir sur Amazon Livraison Prime · Calibré usine — pas de configuration

Entités exposées dans Home Assistant

Après installation et intégration via l'API ESPHome, ces entités apparaissent automatiquement :

  • sensor.routeur_solaire_power_import — puissance réseau en watts (négatif = injection solaire, positif = consommation réseau)
  • switch.routeur_solaire_relay — état du SSR (ON = chauffe-eau alimenté par le solaire)
  • number.routeur_solaire_threshold_on — surplus minimum pour déclencher (W)
  • number.routeur_solaire_threshold_off — seuil d'arrêt (W)
  • number.routeur_solaire_delay_on — délai de confirmation avant activation (minutes)
  • number.routeur_solaire_delay_off — délai de confirmation avant extinction (minutes)

Intégration dans le tableau de bord Énergie Home Assistant

Ajout des capteurs au dashboard Énergie

Le tableau de bord Énergie de Home Assistant n'accepte que des capteurs d'énergie en kWh — pas des capteurs de puissance instantanée en watts. Il faut d'abord créer un capteur d'intégration avant d'ajouter quoi que ce soit au dashboard.

Dans Paramètres → Assistants → Créer un assistant → Capteur d'intégration de Riemann :

  • Entité source : sensor.routeur_solaire_power_import
  • Méthode d'intégration : Trapèze
  • Période d'échantillonnage : 30 secondes
  • Préfixe d'unité : kilo (résultat en kWh)

Home Assistant crée alors une entité sensor.routeur_solaire_power_import_integral (ou nom similaire selon votre choix). C'est cette entité kWh que vous ajoutez dans Paramètres → Tableau de bord Énergie, section "Réseau", comme capteur d'échange réseau — si vous n'avez pas d'autre source (Linky, Shelly EM).

Pour suivre l'énergie effectivement routée vers le chauffe-eau, créez un second helper Riemann sur la puissance du chauffe-eau (si vous mesurez séparément ce circuit). Sinon, les logs du switch routeur_solaire_relay permettent d'estimer la durée de chauffe et d'en déduire l'énergie consommée.

Automatisation de secours en heures creuses

Le routeur ne chauffe que quand le surplus est suffisant. Pour garantir de l'eau chaude lors d'une semaine peu ensoleillée, cette automatisation bascule en heures creuses si le routeur n'a pas suffisamment tourné :

Cette automatisation se base sur un helper "Compteur d'énergie journalier" que vous créez au préalable : dans Paramètres → Assistants, créez un Compteur (Utility Meter) pointant sur l'intégration Riemann du routeur, avec cycle = journalier. L'entité résultante (ex: sensor.routeur_solaire_energie_routee_24h) remet à zéro à minuit et accumule les kWh routés chaque jour.

alias: "Chauffe-eau secours heures creuses"
description: "Active le chauffe-eau si le routeur n'a pas produit assez sur 24h"
triggers:
  - trigger: time
    at: "01:30:00"
conditions:
  - condition: numeric_state
    entity_id: sensor.routeur_solaire_energie_routee_24h
    below: 0.5
actions:
  - action: switch.turn_on
    target:
      entity_id: switch.routeur_solaire_relay
  - delay: "02:00:00"
  - action: switch.turn_off
    target:
      entity_id: switch.routeur_solaire_relay
mode: single

Adaptez le seuil 0,5 kWh à votre consommation réelle (généralement 1 à 2 kWh pour maintenir un ballon de 200L chaud). La plage 01h30-03h30 est représentative des heures creuses EDF pour les abonnements en option HP-HC — vérifiez vos plages réelles dans votre espace client EDF.

Réglages et calibration des seuils

Attendez une journée avec un bon ensoleillement pour calibrer. Observez la courbe de power_import dans l'historique HA et identifiez les plages de surplus typiques de votre installation.

Valeurs de départ recommandées

  • Seuil ON : 300W — déclencher uniquement si le surplus dépasse 300W, pour éviter les oscillations sur un nuage passager
  • Délai ON : 2 minutes — confirmer que le surplus est stable avant d'allumer le chauffe-eau
  • Seuil OFF : −100W — éteindre si la consommation réseau dépasse 100W (on préfère laisser le surplus partir plutôt que de tirer du réseau)
  • Délai OFF : 3 minutes — un nuage de 2 minutes ne justifie pas une extinction et un rallumage immédiat

Ces valeurs sont conservatrices. Après une semaine d'observation, vous pouvez descendre le seuil ON à 200W et les délais à 1 minute si votre production est stable et votre chauffe-eau de faible puissance (1 200W).

Validation avec un wattmètre

Quand le switch routeur_solaire_relay passe ON dans HA, mesurez la puissance en sortie du SSR avec un wattmètre de prise branché en série avec le chauffe-eau. Vous devez lire la puissance nominale du chauffe-eau (entre 2 000 et 2 500W selon le modèle). Si la lecture est 0W alors que le switch est ON, vérifiez la continuité du câblage et l'état du disjoncteur chauffe-eau.

Aller plus loin

Utiliser la Teleinfo Linky comme source de mesure

Si vous avez déjà un LiXee ZLinky ou un adaptateur Teleinfo USB connecté à Home Assistant (voir notre guide Teleinfo Linky mode standard 9600 bauds), vous pouvez supprimer le PZEM-004T et utiliser directement l'entité de puissance Linky comme source.

Le package Solar-Router-for-ESPHome propose power_meter_ha_entity.yaml pour ce cas : l'ESP32 interroge HA via l'API pour récupérer la valeur de puissance réseau. Résultat : mesure plus précise (le Linky inclut toutes les charges du foyer), et zéro calibration à faire.

Passer à la régulation progressive par triac

Une fois à l'aise avec le build SSR, la migration vers le triac se fait en remplaçant le package regulator_mecanical_relay.yaml par regulator_triac.yaml et en remplaçant le SSR par un module gradateur AC (RobotDyn Dimmer Module ou équivalent) — il se câble directement entre la phase et le chauffe-eau. La logique ESPHome et les entités HA restent identiques — seul le mode de régulation change.

Piloter d'autres charges

Le projet supporte plusieurs régulateurs en parallèle. Un second SSR peut piloter une résistance d'appoint sur un ballon tampon, un convecteur électrique ou — avec prudence — une borne de recharge EV en mode ON/OFF (vérifiez la compatibilité de votre borne avec les commutations brusques).

Verdict

Pour un investissement de 25 € et deux heures de montage, le routeur solaire DIY ESPHome + relais SSR est probablement le meilleur ratio investissement/économies de la domotique énergétique DIY. La rentabilité est atteinte en 5 à 10 semaines selon votre installation.

Le code est ouvert et maintenu activement. La communauté HACF compte plusieurs centaines d'installations documentées, et le projet Solar-Router-for-ESPHome supporte une large gamme de hardware et de sources de mesure. C'est un projet solide, éprouvé, qui s'intègre sans friction dans un écosystème Home Assistant local-first.

Si vous avez des panneaux solaires et un chauffe-eau électrique, il n'y a pas de raison valable de ne pas le faire.