Un Routeur Solaire conçu pour Home Assistant (v1.5.0)

J’ai posté sur le GitHub un bout de code pour Enphase Envoy. J’espère que @XavB aura un peu de temps pour l’implémenter. Je reste à disposition pour tester et tuner ça :slight_smile:

1 « J'aime »

Merci @Chilg0rd pour ta contribution. J’aimerais bien attendre la prochaine version de ESPHome avec ce commit : Add option to include vars in remote packages by pszafer · Pull Request #7606 · esphome/esphome · GitHub avant de m’y remettre… C’est une modification qui apportera pas mal de possibilités et de changements. Du coup, je préfère temporiser sur les devs pour ne pas avoir à faire 2 fois le boulot… À suivre…

1 « J'aime »

Oui je comprends ! Tiens-moi au jus :slight_smile:

Bonjour
Tout d’abord bravo et merci pour ce magnifique boulot sur le routeur !
je suis entrain de paramétrer un routeur, ma mesure de consommation/surplus se fait avec un shelly pro 3 em ( une seul pince je suis en mono ), j’ai donc essayé de mettre la config pour un shelly em (en aillant peut d’espoir que cela corresponde ) mais malheureusement cela ne fonctionne pas.
je voulais savoir si toute quelqu’un aurait la même configuration que moi pour la mesure et aurait une solution pour récupérer les infos du pro 3 em.
merci d’avance :slight_smile:

Salut, j’ai aussi ce Shelly même si je ne l’utilise pas pour la conso globale. Est-ce qu’il affiche bien une page web lorsque tu mets dans ton navigateur http://192.168.1.26:8000 (IP et port à remplacer par ceux de ton Shelly) ? Pour ma part, ça répond sur le port 80

Salut @XavB ! J’ai voulu mettre à jour avec la dernière version 1.5.0 mais j’ai une erreur sur le power_meter_home_assistant.yaml ou il est demandé maintenant un « consumption_sensor » en plus du « main_power_sensor », je n’ai rien vu dans ton changeLog à ce propos et je n’ai pas trouvé ça clair dans la doc Home Assistant - Solar Router for ESPHome :-p et ça n’est pas illustré sur cette page ou même pas de sensor équivalent sur d’autres PowerMeters. Bien à toi.

Oui tu dois l’indiquer:

substitutions:
  # Power meter source -----------------------------------------------------------
  # Sensor in home assistant gathering the power consumption
  main_power_sensor: sensor.power_1794
  # Sensor in home assistant gathering the HOME consumption
  consumption_sensor: sensor.home_power

C’est tout à fait ce que j’avais, je n’ai rien touché et maintenant ca compile mais quelle est la différence entre ces 2 sondes et l’utilité ?

bonjour
en tapant mon adresse ip du shelly je tombe bien sur la page du shelly P3EM avec les valeur mise a jour en temps réel effectivement, jusque la tout va bien

par contre j’ai cette erreur quand je veux compiler et charger sur lesp32 qui s’affiche : WARNING Found '${power_meter_auth_header}' (see script->0->then->0->if->then->0->http_request.get->headers->Authorization) which looks like a substitution, but 'power_meter_auth_header' was not declared

sur la doc Shelly EM - Solar Router for ESPHome il est indiqué qu’il est possible de déclarer power_meter_auth_header sans exemple mais tu as bien définit la bonne ip et le bon port ? Les memes que sur ton navigateur ? As-tu configurer un login/password sur ton Shelly ?

je pense que c’est donc cette étape que je n’est pas du faire comme il faut, comme tu dis sans exemple ce n’est pas évident de savoir ce qu’il faut y mettre dans cette parti; ‹ power_meter_auth_header › …

Salut @XavB

Actuellement, j’utilise la solution F1ATB chez mon père pour router le surplus solaire.
Tout marche comme prévu, mais du fait que l’installation dispose d’une batterie, il n’y a pas d’injection tant qu’elle est capable d’absorber.
Le résultat est, que le chauffe-eau ne parvient pas systématiquement à récupérer des watts, pire encore, dans certains cas, c’est la batterie qui vient chauffer l’eau si on force en manuel, donc on perd les pertes liées à la conversion d’énergie et ce n’est pas négligeable.
L’idéal sera de le faire en amont via HA.

Pour cela, sur certains de mes équipements, j’utilise la superbe intégration SolarOptimizer de @Jean-Marc_Collin.

Mon besoin est donc le suivant :

Il faudrait que je puisse via HA indiquer au routeur à quelle puissance il doit se régler en se servant de SolarOptimizer. En effet, cette intégration dispose d’un mode pour piloter des appareils à puissance variable.
Je sais qu’en faisant comme ceci, je vais perdre en réactivité, mais la batterie compensera ce point.

Est-ce qu’il existe une possibilité pour « piloter » le router via HA dans ton projet ?
J’ai vu qu’il y avait une partie HA, mais c’est pour récupérer les informations tel un wattmètres, et là encore la batterie pose problème.

Merci de m’avoir lu

Bonjour @alex71

Oui, quand le routeur est à OFF, on peut régler pourcentage de dérivation à la main. Comme la gestion automatique n’est pas activée, elle restera au niveau que tu as défini.
Si ce pourcentage est calculé avec les règles que tu as définies dans SolarOptimizer, tu vas pouvoir envoyer vers ton chauffe-eau l’énergie que tu souhaites.

En poussant le raisonnement un peu plus loin, quand la batterie est pleine, tu dois pouvoir activer le routage automatique pour avoir une meilleure réactivité.

Je serais intéressé par un retour d’expérience du couplage de SolarOptimizer et SolarRouterForESPHome parce que c’est dans ce genre de couplage qu’on voit la puissance de HomeAssistant.

1 « J'aime »

Bonjour,

Jarrive peut etre un peu tard mais perso j’utilise le routeur F1ATB.

Et solution assez simple de tricher avec des batterie cest de contrôle le routeuren mqtt et de creer côté HA un capteur “tricher” de la reinjection.

De ce fait tu peux charger par exemple tes batterie avec 1kw. Et le reste dans le chauffe eau.

1 « J'aime »

Merci pour ton retour @XavB .

J’ai pu configurer mon routeur assez facilement en me basant sur ton projet. Pour l’instant, il reste virtuel puisque je n’ai pas encore câblé de triac, mais le comportement est celui attendu.

J’ai effectué seulement deux modifications dans tes fichiers pour le rendre compatible avec SolarOptimizer.

En effet, en plus du paramètre « number » pour régler la puissance, il est nécessaire d’ajouter un switch ON/OFF pour pouvoir couper l’appareil, peu importe la valeur du réglage de puissance. SolarOptimizer fonctionne légèrement différemment de ce que tu avais prévu (et c’est tout à fait normal) : lorsqu’il décide de couper l’appareil, il le fait sans forcément mettre le « number » à 0.

Maintenant, je vais me pencher sur la gestion du « shunt » dans Home Assistant, notamment lorsque la batterie arrive en fin de charge, afin d’optimiser la réactivité de la régulation comme tu l’avais suggéré.

Je reviendrai vers toi avec un retour, ou éventuellement une pull request sur ton GitHub pour intégrer cette fonctionnalité.

@Geordie_Paquet Merci, je garde cette solution en réserve au cas où.

Cool.

Une PR avec une explication dans la doc serait l’idéale pour partager ton expérience au plus grand nombre et de manière durable. :slightly_smiling_face:

1 « J'aime »

J’essaierais de te faire une pull request quand le fonctionnement sera bon, idem pour l’utilisation du JSY-MK-194 quand j’aurais mis la main sur celui qu’à mon père. C’est moi qui ai fait une réponse à ce sujet vu qu’il y avait une issue dessus.

Actuellement je me heurte à un problème d’à coup quand je suis en dimming (pas de problème à 0 et 100% d’angle), tu n’as pas eu de problème de ton côté ? Je n’ai pas touché cette partie là pourtant.

Je vais désactiver les messages de logs car ça bombarde pas mal, peut être que ça surcharge l’esp32…

Petit retour sur l’état d’avancement :

À coup sur la sortie

J’ai réglé partiellement le problème d’à-coup, j’ai été obligé de désactiver la polarité inversée dans le fichier regulator_triac.yaml au niveau de :

output:
  - platform: ac_dimmer
    id: ac_dimmer_output
    gate_pin: ${regulator_gate_pin}
    zero_cross_pin:
      number: ${regulator_zero_crossing_pin}
      mode:
        input: true
      inverted: no # ici

Je ne sais pas si c’est dû à mon hardware ou non, il est basé sur le schéma de RobotDyn normalement, en tout cas en faisant ça c’est nickel.

Le souci d’à-coup revient par contre quand je veux utiliser une sonde de température DS18B20. J’ai essayé avec et sans pull-up, sur différentes pins, en résolution 9 bits, rien n’y fait : à chaque mise à jour du capteur, ça fait un à-coup (triac qui passe à 100 % pendant au minimum une période, je n’ai pas regardé précisément).

Après, il est vrai que ces à-coups ne posent pas vraiment de problème, mais j’aimerais avoir un comportement le plus sain possible.

Triac bloqué à 100 %

J’ai eu deux fois le cas où le triac est resté bloqué à 100 %, même après un reset soft. Je pense que cela est dû à l’une de mes modifications mais je n’ai pas encore trouvé d’où cela venait.

JSY-MK194-T

Pas encore reçu, donc pas pu essayer encore.

Comportement

Hormis ces petits points, l’idée est vraiment prometteuse : une automatisation bascule le routeur en mode standalone lorsque la batterie est suffisamment chargée, et repasse en mode piloté par SolarOptimizer lorsqu’on est en dessous d’un certain seuil.
On a donc le meilleur des deux mondes : le routeur est prioritaire sur la batterie mais réagit lentement (timing donné par le parametrage dans SolarOptimizer, 2 minutes dans mon cas) lorsque la batterie est trop faiblement chargée, et garde sa réactivité lorsque la batterie est suffisamment chargée.

Salut tout le monde.

J’ai reçu mon capteur JSY-MK-194T, j’ai pu l’intégrer au projet, ça fonctionne.

Maintenant @XavB , il faudrait qu’on discute au niveau technique, car je n’ai pas tout compris sur l’architecture du projet, et je ne suis pas un pro d’ESPHome, loin de là. Donc te faire une pull request en l’état ça risque de ne pas être chouette :sweat_smile:

Le capteur JSY, permet la lecture de deux capteurs de puissance (+ d’autres capteurs, mais là n’est pas le sujet) sur la même carte grâce à une mesure de tension commune, mais deux tores de mesure de courant différents :

  • ch1 : mesure de la charge
  • ch2 : mesure du secteur au niveau de l’entrée de la maison

Deux cas d’utilisation possibles :

Cas 1 : On veut utiliser les deux capteurs, donc on peut utiliser le JSY comme « power_metter » pour la partie énergie échangé avec le réseau ENEDIS + « energy_counter » pour la partie énergie dans la charge.

Cas 2 : Mon cas : on veut utiliser uniquement le capteur de la charge, car on ne peut pas lire le réseau EDF pour une de ces raisons : contrat en 0 injection, ou distance entre la charge et le routeur trop grande. Dans ce cas là, on a un autre moyen de lire cette information : capteur de puissance déporté, ou un capteur virtuel dans HA ( comme tu le propose déjà dans ton projet)

Je ne sais pas trop comment architecturer tout ceci dans le fichier yaml, là j’ai fait le gros bourrin pour tester, mais il y a moyen de faire quelque chose de plus propre.
Soit deux fichiers différents, soit peut être grâce à des substitutions ?
Edit : j’ai fait plusieurs fichiers, un pour le power metter, un pour l’energy counter, et un commun spécifique dans le cas d’utilisation du JSY. Comme ça l’utilisateur peut configurer à sa guise suivant sa config

Si jamais tu peux m’aider un peut sur ce point et me dire par quels moyens tu veux qu’on échange (pour ne pas polluer ce fil inutilement).

PS : je n’ai pas traité le problème de blocage à 100% du triac, ou du moins je ne suis pas encore certain de l’avoir résolu


Edit du 02/12/2025 :

Salut @XavB,

Petit message pour dire que j’arrive à la fin (138 commit quand même au total avec tous les essais / modifs :sweat_smile:).

J’ai pu faire exactement ce que je voulais et pour l’utilisation de Solar Optimizer et pour l’utilisation du JSY-MK-194T.

Du coup deux configurations sont possibles lors de l’utilisation du capteur JSY-MK-194T:

  • standalone : on utilise les deux capteurs du JSY-MK-194T (Ch1 : capteur sur la charge, Ch2 : capteur de puissance de la maison au niveau du compteur EDF)
  • hybride (exemple : Home Assistant pour la mesure real_power + JSY-MK-194T pour l’énergie dérivée) → utile si le routeur est loin du point de mesure, ou si le contrat est en 0 injection (il faudra créer dans HA un capteur virtuel de simulation d’injection en estimant l’énergie potentielle non produite, cf. par exemple mon projet ici : ESP-PowerSunSensor)

J’ai mis à jour la doc française aussi, j’attend quelques jours avant de te pousser toutes les modifications.

Je suis encore en train de débugger cette histoire de blocage de triac, mais je pense à un problème hardware.