Routeur Solaire Expérimental

Architecture, logique de régulation, code Home Assistant et mapping brightness → puissance. Implémentation sur SSR 230V piloté par dimmer Zigbee.

Architecture du système

Le routeur est entièrement passif vis-à-vis du réseau : il ne fait que modifier la puissance absorbée par le chauffe-eau pour coller au surplus instantané mesuré par le smartmeter bidirectionnel.

Architecture du routeur solaire Chaîne de signal : Compteur Nodon → Home Assistant → Dimmer Zigbee → SSR → Résistance chauffe-eau Panneaux PV surplus ☀️ Compteur Smartmeter Zigbee Zigbee Home Assistant automation YAML mode: restart light.turn_on Dimmer Zigbee 0 - 255 PWM SSR 230V Relais statique AC commutation Chauffe-eau 1 950 W thermostat mécanique
Le smartmeter mesure positivement le soutirage réseau et négativement l'injection. La variable p_linky dans l'automation vaut donc 0 à l'équilibre, négatif en surplus, positif en déficit.

Schéma de câblage

Schéma de principe - Routeur solaire Câblage logique : Réseau, Smartmeter 2 canaux (Ch1 phase principale, Ch2 phase chauffe-eau), Dimmer Zigbee, SSR 0-10V et Chauffe-eau Phase P Neutre N ctrl + (0-10V) ctrl - (GND) P N Réseau Ch1 Ch2 Smartmeter Dimmer Entrées P/N + Sorties 0-10V Signal 0-10 V DC + - P in P out SSR 0-10V Linear Chauffe-eau 1 950 W

Courbe brightness → puissance

Le dimmer Zigbee expose une valeur brightness de 0 à 255. La relation avec la puissance réelle dissipée par la résistance n'est pas linéaire - elle suit une courbe mesurée empiriquement.

BrightnessPlagePuissance (W)Formule interpolée
0 - 63mort0 W-
64 - 95démarrage9 → 135 Wlinéaire (9, 135)
96 - 111basse135 → 269 Wlinéaire (135, 269)
112 - 127montée269 → 490 Wlinéaire (269, 490)
128 - 143milieu490 → 783 Wlinéaire (490, 783)
144 - 159mi-haute783 → 1 103 Wlinéaire (783, 1103)
160 - 175haute1 103 → 1 407 Wlinéaire (1103, 1407)
176 - 189très haute1 407 → 1 624 Wlinéaire (1407, 1624)
190 - 207max pratique1 624 → 1 960 Wlinéaire (1624, 1960)
208 - 255plateau1 960 → 2 100 Wquasi-plateau
La courbe est propre à chaque dimmer + SSR + résistance. Une mesure empirique avec un wattmètre est indispensable avant mise en production.

Logique de régulation

L'automation calcule un brightness_cible à chaque déclenchement (nouveau relevé Linky) selon les règles suivantes.

Gains adaptatifs

ConditionDirectionGainEffet
surplus > 1 200 W↑ montée0.6Rattrapage rapide
600 W < surplus ≤ 1 200 W↑ montée0.4Montée modérée
0 < surplus ≤ 600 W↑ montée0.25Montée douce
soutirage quelconque↓ descente0.8Descente prioritaire

Garde-fous

ConditionAction
|Linky| < 5 W (zone morte)maintien - pas de variation
brightness_calc < seuil_off (60) en descenteextinction → brightness = 1
brightness_calc < seuil_on (80) en montéesaut → brightness = 80 minimum
delta > variation_max par cycleécrêtage - progression limitée
Le variation_max est dynamique : max(2, |écart| / 10). Plus le déséquilibre est grand, plus la variation autorisée par cycle est large.

Pourquoi éviter les oscillations à tout prix

L'asservissement puissance/compteur forme une boucle fermée : le routeur augmente la charge, ce qui réduit le surplus mesuré, ce qui fait redescendre la charge, et ainsi de suite. Sans précaution, cette boucle peut osciller - la puissance monte et descend en permanence sans jamais se stabiliser.

Les conséquences sont sérieuses à plusieurs niveaux :

RisqueExplication
Usure du SSRUn relais statique qui commute en permanence se réchauffe anormalement. Les SSR sont conçus pour des commutations lentes, pas pour un haché haute fréquence. Une surchauffe peut conduire à la destruction du composant.
Perturbations réseauDes variations rapides de charge créent des harmoniques et des fluctuations de tension qui peuvent perturber d'autres équipements sur la même ligne.
Imprécision de la régulationSi le système oscille, il consomme en moyenne plus que le surplus disponible et soutire du réseau par intermittence - l'objectif zéro-soutirage n'est plus atteint.
Logs HA saturésChaque déclenchement du script écrit dans l'historique. Des milliers d'événements par heure dégradent les performances de Home Assistant et de sa base de données.
Les trois mécanismes anti-oscillation de ce routeur sont : la zone morte ±5 W (ne rien faire si l'écart est négligeable), le variation_max par cycle (progresser par petits paliers), et le mode restart du script (annuler toute exécution en cours si un nouveau relevé arrive - évite la superposition de plusieurs instances).

Code YAML complet

Script Home Assistant - automation de type script appelable avec les paramètres dimmer et nomCE.

YAML · Home Assistant script
routage_solaire_dimmer:
  alias: "Routage solaire générique dimmer"
  mode: restart

  fields:
    dimmer:
      description: "Entité du dimmer"
    nomCE:
      description: "Nom logique du chauffe-eau"

  sequence:
    # 1. Variables de configuration
    - variables:
        p_max: 1950         # Puissance nominale résistance
        idle_min: 1          # Brightness minimal (≠ off)
        seuil_on: 80         # Saut minimum à la montée
        seuil_off: 60        # Extinction si dessous en descente
        p_linky: >
          {% if is_state('input_boolean.simulation_solaire','on') %}
            {{ states('input_number.simulation_puissance_linky') | float(0) }}
          {% else %}
            {{ states('sensor.compteur_general_power') | float(0) }}
          {% endif %}

    # 2. Calcul puissance actuelle du CE via courbe empirique
    - variables:
        p_actuelle: >
          {% set b = brightness_actuel %}
          {% if b < 64 %} 0
          {% elif b < 96 %} {{ (9 + (b-64)*(135-9)/(96-64)) | int }}
          {# … segments intermédiaires … #}
          {% else %} {{ (2085 + (b-240)*(2100-2085)/(255-240)) | int }}
          {% endif %}

    # 3. Calcul brightness cible avec gains adaptatifs
    - variables:
        cible_finale: >
          {% set surplus = -p_linky %}
            {% set gain_monte = 0.6 if surplus>1200 else 0.4 if surplus>600 else 0.25 %}
            {% set gain = gain_monte if ecart>0 else 0.8 %}
            {% set variation_max = [2, (ecart|abs/10)|int] | max %}
            {# Application zone morte, écrêtage, seuils on/off … #}

    # 4. Application si delta > 1 brightness
    - action: light.turn_on
      target:
        entity_id: "{{ dimmer_entity }}"
      data:
        brightness: "{{ cible_finale | int }}"

Simulateur

Reproduit exactement le calcul de l'automation pour n'importe quel état d'entrée.

-800 W
100
p_linky eff.
-
ecart
-
gain
-
variation_max
-
cible_finale
-
p_actuelle (W)
-
p_cible (W)
-
delta bri.
-
action
-
cycle
-
etat
-
00 / 255255

Extensions

Appoint EDF aux heures creuses

Le routeur solaire couvre les besoins en eau chaude les jours bien ensoleillés. Mais en hiver, par temps couvert ou lors de plusieurs jours consécutifs sans production suffisante, le chauffe-eau peut ne pas atteindre sa température de consigne avec le seul surplus solaire.

Il est indispensable de prévoir un appoint automatique sur les heures creuses EDF. Le principe : Home Assistant surveille la température du ballon et, si elle n'a pas atteint le seuil requis en fin de journée, déclenche une chauffe complémentaire pendant la plage tarifaire la moins chère - typiquement entre 22 h et 6 h.

ConditionAction Home Assistant
Fin de journée solaire, température ballon < seuilActiver l'appoint au début de la plage heures creuses
Température ballon atteinteCouper l'appoint immédiatement
Début de journée, production solaire détectéeDésactiver l'appoint - laisser le routeur prendre la main
Il existe une astuce pour détecter que le ballon est à température sans aucune sonde physique - en croisant les données déjà disponibles dans Home Assistant. Elle suffit à piloter intelligemment l'appoint.

Extensions optionnelles

ModeDescriptionCas d'usage
Mode vacances Suspension complète du routage et de l'appoint. Le chauffe-eau est mis en veille ou maintenu à une température minimale anti-légionelle (55 °C une fois par semaine). Absence prolongée - évite de chauffer inutilement, tout en assurant l'hygiène sanitaire du ballon.
Mode solaire uniquement Désactivation de l'appoint heures creuses. Le ballon n'est chauffé que par le surplus photovoltaïque, sans jamais tirer sur le réseau. Objectif autonomie complète en été, ou pour les utilisateurs souhaitant mesurer la part solaire pure.
Cascade multi-chauffe-eau Plusieurs instances du script tournent en parallèle, chacune pilotant un dimmer et un SSR distinct. Un mécanisme de priorité distribue le surplus : le chauffe-eau principal est servi en premier, les suivants reçoivent l'excédent résiduel. Grande maison, gîte, installation avec deux ballons (un par zone). Nécessite autant de dimmers et de SSR que de chauffe-eau.

Nomenclature

ComposantRôleRemarque
Compteur bidirectionnel 2 canaux - Zigbee Mesure le flux réseau en temps réel (soutirage / injection) ainsi que la consommation du chauffe-eau A placer sur le tableau principal, sur le fil de phase et sur le fil de phase du chauffe-eau
Dimmer Zigbee Traduit la consigne Home Assistant en signal 0-10 V pour le SSR Doit exposer un attribut brightness 0-255
SSR 230V AC à entrée 0-10 V Module la puissance 230V envoyée à la résistance du chauffe-eau Prévoir dissipateur thermique - peut chauffer en charge
Chauffe-eau électrique Charge thermique réceptrice du surplus solaire Thermostat mécanique obligatoire - exclure les modèles à régulation électronique
Home Assistant (Raspberry Pi ou mini-PC sous Linux Ubuntu) Centrale domotique qui exécute l'automatisation de routage Doit rester actif en permanence ; intégration Zigbee2MQTT recommandée
Passerelle Zigbee (Clé USB ou Radio) Passerelle radio entre Home Assistant et les modules Zigbee Ex. Sonoff Zigbee 3.0 Dongle Plus (USB) ou bien SMLIGHT SLZB-06 en ethernet (filaire ou wifi)

Spécifications techniques

Compteur de consommation - 2 canaux ou 2 compteurs 1 canal

Le système a besoin de deux mesures distinctes : le flux réseau global (Ch1, sur la phase principale au tableau) et la consommation du chauffe-eau (Ch2, sur la phase qui alimente la résistance). Si le tableau principal et le chauffe-eau sont proches, un seul smartmeter 2 canaux suffit et simplifie le câblage.

Si les deux points de mesure sont trop éloignés - chauffe-eau dans un local technique séparé, tableau à l'autre bout du logement - il est plus pratique d'installer deux compteurs mono-canal indépendants. Chaque compteur est placé là où se trouve le fil à mesurer ; ils remontent leurs données séparément à Home Assistant via Zigbee, sans contrainte de distance entre eux. L'automation lit alors les deux entités distinctes.

Protocole Zigbee - pas de Wi-Fi, pas de Tuya

Tous les modules de ce montage communiquent en Zigbee natif, intégré via Zigbee2MQTT dans Home Assistant. Les modules Wi-Fi ou Tuya cloud sont exclus : ils introduisent une latence imprévisible (round-trip cloud) incompatible avec une boucle de régulation à la seconde, et dépendent d'un serveur tiers hors de votre contrôle.

Le réseau Zigbee mesh est local, déterministe et fonctionne hors-ligne. Chaque module routeur (compteur, dimmer) renforce la portée.

SSR 40 A - refroidisseur intégré et commande 0-10 V

Le relais statique (Solid State Relay) doit impérativement être choisi avec :

Installation du SSR - ne pas l'enfermer dans un boitier

Un SSR en charge dissipe de la chaleur par convection naturelle sur son refroidisseur. L'enfermer dans un coffret fermé sans ventilation forcée provoque une accumulation thermique qui réduit la durée de vie et peut conduire à la destruction du composant.

Montez le SSR sur une surface métallique aérée (rail DIN ouvert, plaque de fond de tableau non cloisonné), refroidisseur orienté vers le haut ou en façade pour faciliter la convection. Laissez au minimum 5 cm d'espace libre autour du dissipateur.

Dimmer Zigbee - sortie 0-10 V obligatoire

Le dimmer doit exposer une sortie analogique 0-10 V (et non une sortie TRIAC ou un coupure de phase) pour piloter le SSR en modulation linéaire. Il doit également exposer un attribut brightness sur 0-255 utilisable par Home Assistant via Zigbee2MQTT.

Les dimmers Wi-Fi ou Tuya sont exclus pour les mêmes raisons que les autres modules : latence cloud et dépendance à un service tiers. Vérifiez la compatibilité Zigbee2MQTT du modèle avant achat sur le site officiel zigbee2mqtt.io/supported-devices.

Avertissements

Installation par un professionnel. Ce montage reste expérimental. Il implique des interventions sur le tableau électrique (pose de sondes sur les phases, câblage du SSR en coupure de phase 230V). Ces travaux doivent être réalisés par un électricien qualifié ou sous sa supervision. Une erreur de câblage peut provoquer un court-circuit, un incendie ou un choc électrique mortel.
Harmoniques et compatibilité électromagnétique. Le SSR module la puissance par "hachage" du courant alternatif (commutation répétée sur la sinusoïde 50 Hz). Ce hachage génère des harmoniques qui se propagent sur le réseau domestique et peuvent perturber certains appareils sensibles : variateurs de lumière, alimentations à découpage, équipements audio ou médicaux. L'impact dépend de la qualité du SSR, de la longueur et du tracé des câbles, et de la sensibilité des équipements présents. La solution s'étudie au cas par cas - un filtre de ligne ou un SSR à commutation au passage par zéro peut suffire à résoudre le problème.