[DefiDIY25] Solar-Router-For-ESPHome

Bonjour,

J’ai déjà eu l’opportunité de vous présenter mon projet de routeur solaire ici et et le projet à continuer à grandir depuis ces dernières présentations.

Contexte & objectif

Solar-Routeur-For-ESPHome est un projet, basé sur ESPHome, qui a pour objectif de créer un routeur solaire 100% compatible avec Home Assistant.

C’est quoi “un routeur solaire” et ça sert à quoi ?

Un routeur solaire est un dispositif utile aux personnes ayant une installation de panneaux solaires et voulant augmenter leur auto-consommation. Grâce à lui, il est possible de rediriger le surplus de production solaire vers un chauffe-eau et/ou un radiateur (pour le hors-gel) et/ou toute autre charge résistive. Comme l’énergie est toujours achetée plus cher qu’elle n’est revendue, ce dispositif maximise l’auto-consommation et permet ainsi de réduire sa facture d’électricité.

Solar-Routeur-For-ESPHome

Solar-Router-For-ESPHome c’est le projet de routeur solaire que j’ai initié en utilisant ESPHome. Au début, ce projet avait pour objectif de répondre à mes besoins : Rediriger le surplus de production de mes panneaux solaires vers mon chauffe-eau en utilisant les données de consommation extraites directement de mon onduleur Fronius.

Lors de mes recherches, j’ai été séduit par la modularité du routeur solaire de F1ATB et j’ai donc conçu mon projet dans le même état d’esprit.

J’ai publié la première version Open Source de mon projet en début 2024 et depuis cette date, j’ai eu plusieurs retours d’utilisateurs et même des propositions de codes permettant d’apporter des améliorations et des nouvelles fonctionnalités.

D’un projet personnel, ce projet est devenu un projet collaboratif avec la participation de @tikismoke, ghish, @SullyP, … qui supporte maintenant :

  • Les compteurs d’énergie Shelly ou Home Assistant
  • Les chauffes-eau avec 3 résistances
  • Les relais mécaniques, les relais statiques, les gradateurs et des combinaisons de ces éléments
  • La gestion du forçage d’activation et d’arrêt en fonction de l’heure courante
  • Une réactivité variable en fonction du sens de l’échange d’énergie

J’en profite donc pour remercier toutes les personnes qui ont fait des retours et/ou proposés leurs contributions.

Matériel (BOM) & Schéma de câblage

Comment faire pour créer mon propre Solar-Router-For-ESPHome ?

Tout d’abord un avertissement : Ce projet met en œuvre des tensions et des courants qui peuvent être dangereux et voir mortels. Assurez-vous de bien connaitre ces dangers avant de vous lancer dans la construction de votre routeur solaire.

J’ai pris le temps d’écrire une documentation en français et en anglais pour permettre à toute personne intéressée de créer le routeur adapté à ses besoins.

Voici un exemple de ma première réalisation construite avec :

  • 1 x ESP32 Wroom
  • 1 x module Triac RoboDyn 24A
  • 2 x leds + résistances
  • 1 x alimentation USB de téléphone

https://xavierberger.github.io/Solar-Router-for-ESPHome/images/hardware_triac.drawio.png

Une fois monté, le routeur ressemble à ceci :

https://xavierberger.github.io/Solar-Router-for-ESPHome/images/SolarRouterOpen.pnghttps://xavierberger.github.io/Solar-Router-for-ESPHome/images/SolarRouterClosed.png

La configuration permettant de mettre en œuvre ce matériel avec un onduleur Fronius est la suivante :

# --------------------------------------------------------------------------------
# ESPHome configuration - This part depends on your hardware target
# --------------------------------------------------------------------------------

esphome:
  name: solarrouter
  friendly_name: SolarRouter
  min_version: 2025.3.2

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  baud_rate: 115200
  level: INFO
  logs:
    component: ERROR
    light: ERROR

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_encryption_key


# Enable over-the-air updates
ota:
  - platform: esphome
    password: !secret solar_router_ota_password

# Enable improv serial
improv_serial:

# WiFi connection
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # If you have a WiFi activity plannification, you may have to update the reboot timeout (Default: 15min)
  reboot_timeout: 24h

# Activate web interface
web_server:
  port: 80

# Define watchdog time (it should be greater than timeout)
http_request:
  watchdog_timeout: 12s

# --------------------------------------------------------------------------------
# Customisation
# --------------------------------------------------------------------------------

# This part of the script is designed to be used for customisation. 
packages:
  solar_router:
    url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
    refresh: 1d
    files: 
      - path: solar_router/common.yaml
      - path: solar_router/power_meter_fronius.yaml
        vars:
          power_meter_ip_address: "192.168.1.21"
      - path: solar_router/regulator_triac.yaml
        vars:
          regulator_gate_pin: GPIO22
          regulator_zero_crossing_pin: GPIO23
      - path: solar_router/engine_1dimmer.yaml
        vars:
          green_led_pin: GPIO19
          yellow_led_pin: GPIO18

Le résultat

Maintenant, ma consommation suit ma production :

9 « J'aime »

Pour avoir un de chaque (piscine avec un dimmer de xavb et un mini chauffage d’hiver en f1atb via SSR), je tiens a noté l’avantage de celui de @XavB sur le pilotage bien mieux intégré dans HA grâce à esphome.

Après en termes de régulation, les deux se valent si l’on veut faire du 0 injection.

L’avantage d’esphome étant de pouvoir s’adapter et faire d’autres choses plus facilement en plus (dht22/bmex80/etc. En fonction de la carte utilisée) ce qui dans mon cas m’a fait faire ce choix pour le chauffage de la piscine.

Salut, je possède déjà un routeur MsunPV mais il ne fait pas de module sans fil donc pour router un chauffage d’appoint je pense utilise ton routeur.
J’ai regardé ta doc doc, si je comprends bien je dois prendre ton code qui est ici et si je veux piloter un SSR, utilisé ma remonté de conso réseau avec mon sensor Enphase qui j’actualise toutes les 15s et ajouter une ds18b20 je dois ajouter les packages dans le script ESPHome de base ?

Merci

Salut @sebr,

Pour réaliser un routeur solaire qui interroge Home Assistant et qui pilote un SSR, tu peux utiliser (et adapter) la configuration suivante :

packages:
  solar_router:
    url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
    files:
      - path: solar_router/power_meter_home_assistant.yaml
        vars:
          main_power_sensor: "sensor.smart_meter_ts_100a_1_puissance_reelle"
          consumption_sensor: "sensor.solarnet_power_load_consumed"
    files:
      - path: solar_router/regulator_solid_state_relay.yaml
        vars:
          regulator_gate_pin: GPIO22
    files:
      - path: solar_router/engine_1dimmer.yaml
        vars:
          green_led_pin: GPIO32
          green_led_inverted: 'False'
          yellow_led_pin: GPIO14
          yellow_led_inverted: 'False'
          hide_regulators: 'True'
          hide_leds: 'True'

Ce code est construit à partir de la doc. J’ai fait mon marché :slight_smile: et j’ai pris

  • un power-meter Home Assistant
  • un Solid State Relay
  • et un moteur de contrôle à pilotage variable

Une remarque cependant :

Si les informations de consommations sont actualisées toutes les 15 secondes, tu auras un système qui réagit lentement aux changements de production et je crains que tu sois déçu du résultat (avec des consommations d’énergie du réseau et des non-consommations du surplus).

Le problème, c’est que Solar-Router-For-ESPHome ne supporte pas les micro-onduleurs Enphase… et ce n’est pas faute d’avoir essayé. En effet, pour les produits Enphase, il faut d’abord récupérer une clé sur les serveurs du fabricant avant d’avoir l’autorisation d’interroger ses propres micro-onduleurs sur son réseau local :frowning: . Avec @Chilg0rd, nous avons essayé de créer un power-meter dédié à Enphase mais les essais n’ont pas abouti à cause de cette récupération de clé.

Conclusion, si tu veux avoir un asservissement efficace avec tes micro-onduleurs, je ne peux que te recommander d’utiliser la solution de F1ATB et d’interroger directement tes micro-onduleurs. Certes, c’est une solution qui est moins bien intégrée à Home Assistant que Solar-Router-For-ESPHome, mais qui supporte en natif les produits Enphase. Et puis comme le matériel est compatible, si un jour les produits Enphase sont supportés par Solar-Router-For-ESPHome, il te suffira de faire une mise à jour logicielle pour en bénéficier.

J’en profite pour faire un appel à contribution. Si un développeur est motivé pour créer un power-meter Enphase, c’est avec plaisir que je mergerai son code dans le projet :slight_smile: .

Salut,

Merci pour ta réponse, l’avantage du tien c’est que j’avais rien a mettre dans le garage, un esp suffisait.

Sinon faut que j’installe un Shelly. J’ai aussi un esp avec une PZEM-004T V3 mais ca prends pas le négatif, il me semble que c’est un souci matériel.

Bonjour,

Actuellement j’ai un routeur f1atb avec une simple pince amperemétrique, est-ce possible d’ajouter un composant ct_clamp dans l’esphome de ton router ?

Bonjour,

Oui, techniquement, c’est possible. Il « suffit » de créer un power meter.

Ta pince ampèremétrique, elle est branchée sur quoi ?

Elle est branchée sur un gpio de l’esp32 en mode convertisseur analogique-numérique.

Salut Xav, juste pour te dire que j’ai finalement testé le F1ATB avec mon Envoy Metered et c’est pafait, actualisation toutes les 400ms, juste besoin d’un esp et un ssr sur mon radiateur top.

Merci

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.