Automatisation pour routeur solaire

Hello tout le monde,

Je me suis récemment équipé du routeur solaire de Cyril Poissonnier: Pv Routeur par APPER

J’ai les 2 cartes: la carte « routeur » et la carte « dimmer ».

Je souhaiterais me dispenser de la carte « routeur » et contrôler toute la logique de routage dans home assistant. En fait j’ai un autre routeur solaire pour la recharge de mon VE (un SmartEVSE) et j’aimerais pouvoir flécher l’énergie vers l’un ou l’autre en fonction de mes besoins, avec une bonne granularité (genre 50/50 ou 70/30).

Déjà je suis preneur de vos avis là dessus, c’est peut-être pas une bonne idée.

J’en viens à mon problème: le dimmer remonte dans MQTT et je peux le contrôler manuellement dans HA, pas de souci là dessus:

Maintenant, j’aimerais que HA fasse le boulot de la carte routeur, c’est à dire:

  • Mesurer la puissance qui repart sur le réseau;
  • Envoyer la valeur de puissance au « dimmer » de sorte que ça corresponde à l’excédent solaire.

J’ai fait une automatisation qui exécute un template. Voici le contexte:

  • dimmer_powdimmer_7565 est la consigne de puissance du dimmer, entre 0 et 100. La résistance du ballon d’eau chaude fait 1800W.
  • pinces_amperemetriques_power_a est la mesure de puissance au compteur (la pince est bidirectionnelle)
  • pinces_amperemetriques_power_b est la mesure de puissance du dimmer / ballon d’eau chaude.

Le trigger:

entity_id:
  - sensor.pinces_amperemetriques_power_a
for:
  hours: 0
  minutes: 0
  seconds: 0
trigger: state
enabled: true

Traduction: déclenchement dès que la valeur mesurée change.

La condition:

condition: state
entity_id: input_boolean.enable_water_heater
state: "on"

L’action:

action: number.set_value
metadata: {}
target:
  entity_id: number.dimmer_powdimmer_7565
data:
  value: >-
        {% set current_value = states('number.dimmer_powdimmer_7565') | float(0) %}
        {% set grid_power = states('sensor.pinces_amperemetriques_power_a') | float(0) %}
        {% set dimmer_power = states('sensor.pinces_amperemetriques_power_b') | float(0) %}
        {% set new_value = current_value - ((grid_power + dimmer_power) / 1800 * 100) %}
        {{ [new_value, 0] | max | round(0) }}

Traduction:
Ben euh c’est là que je suis un peu perdu, j’arrive pas à faire la bonne formule :smiley: en l’état, avec mon automatisation, la consigne de puissance du dimmer fait 0 > 20% > 0 > 20% > 0…

Pouvez-vous m’aider à trouver la bonne formule?

Merci :smiling_face:

Hello,

Si tu remplaces le calcul de new_value par

{% set new_value = (dimmer_power - grid_power) / 1800 * 100) %}

Tu devrais avoir la bonne consigne.

A+

Merci @Lexyan pour ta réponse :slight_smile:

J’ai appliqué ta suggestion. Voilà comment ça se comporte maintenant, il y a toujours du « on/off » malheureusement…

ezgif-7-753ae0e635

Est-ce que tu peux faire une capture de l’historique avec tes 2 mesures pinces ampèremétrique, et les consignes de ton dimmer (les 2 Power de ta capture Water Heater)

Sur ton GIF on voit que la consigne change quelques instants après/avant que la consommation change, si tu ajoutes un délai après changement de valeur, ça pourrais solutionner le problème

Voilà le screen. Je n’ai pas mis l’autre valeur de puissance car c’est une valeur qui ne change que si elle est définie manuellement dans l’interface. Autrement elle reste à zéro.

On peut voir un pattern intéressant.

En zoomant un peu:

Sur les graphs on voit bien que tes informations de cons ne sont pas synchro et que la pince b arrive toujours après (à confirmer sur le long terme)

Si tu changes ton trigger sur la pince b ça devrait s’arranger, sinon tu peux ajouter une action Blocs de constructionAttendre que le temps passe (délai) au début de tes actions pour attendre quelques secondes avant de faire un changement de consigne

PS: jettes un œil à l’intégration Solar Optimiseur de JM_Collin Intégration Solar Optimizer - Optimisation de sa consommation Solaire ; ça fait exactement ce que tu souhaite en automatique avec très peu de paramétrage

1 « J'aime »

Merci pour ta réponse.

J’ai ajouté un délai de 2s au début des actions, et ça marche beaucoup mieux! :slight_smile:

Il y a quand même un delta de 10 ou 20% entre l’excédent et la consigne, je ne sais pas trop pourquoi vu que la production solaire est relativement stable et les autres charges aussi.

Du coup j’ai rajouté un coefficient dans mon calcul de consigne. Pas le plus élégant mais ça fait le taf :+1:

L’extension a l’air top, je regarderai ça un peu plus tard.

Hello,

L’écart peu s’expliquer par la valeur de consommation du chauffe eau fixée à 1800W, on peu affiner le calcul en prenant en compte la current_value et la consommation actuelle du CE pour en déduire la puissance réelle,
Remplacer 1800 par 100*dimmer_power/current_value.
Sur ton graph, pour une ouverture à 20% (à 10h02m30s) ton CE consomme 300W, ce qui ferait une puissance de 1500W à 100% d’ouverture.

Si on prend l’exemple de ce même point, il reste environ 60W d’export et si l’on refait le calcul avec 1500W maxi ça donnerais une ouverture à 24% pour une consommation de 360W (300+60) et à 10h05m30s on voit que pour une ouverture de 24% ton CE consommerais environ 340W donc on s’approche bien de la réalité.

1 « J'aime »

Merci pour ta réponse, t’es au top.

Le delta ne semble pas linéaire. À 20% de puissance j’ai un delta de ~25%. À 40%, 15%. À 100%, 3%. C’est peut-être le SSR qui manque de précision à basse puissance. J’en ai un deuxième à monter, Cyril m’a dit que ça serait plus précis.