Routeur Solaire

Encore , je comprenais pas depuis hier, j’avais des résultats bizarre dans mes Etats, dans paramètres de développement…

Ce n’est pas un int mais un float qu’il fallait mettre…

Maintenant tout fonctionne !

Bonjour à toutes et à tous,

Voici mon code.

Pour l’automatisation:

Et pour le template:

Je ne comprends pas, je vois bien ma commande de calcul de ma commande_dimmer,
mais par contre, le dimmer n’est pas commandé à sa valeur de brightness…

Je sèche à nouveau…

Merci par avance pour votre aide

Après, la valeur de dimmer n’est pas entière, malgré l’arrondi à zéro.

J’y comprends plus rien.

Petite précision : la valeur de puissance reçue par le sensor de l’onduleur est en kW, et non en w…

C’est bon, j’ai modifié les réglages de l’intégration de mon onduleur, ma valeur est dorénavant en w.

Yesss

Mon arrondi…

Voilà la vrai formule:

template:

  • sensor:
    name: « commande_dimmer »
    state: >
    {{ min((states(‹ sensor.solarman_feed_in_out_power ›) | int ) * 100 / 2500 , 100) | round (0) }}

Et là, j’ai des entiers !

Ca avance

Bon maintenant, et pour finir, je n’arrive pas à lier ma valeur de command_dimmer à mon brightness_pct.

Mon automation ne fonctionne pas du tout.

  • id: ‹ 1677855143248 ›
    alias: essai modulation ecs
    description: ‹  ›
    trigger:
    • platform: numeric_state
      entity_id: sensor.commande_dimmer
      above: 25
      condition: []
      action:
    • type: light.turn_on
      device_id: 7431f7ea19ca6f6840fa8fe816578f05
      entity_id: light.modul_ecs_dimmerized_light
      domain: light
      data_template:
      brightness_pct: « {{ states(‹ sensor.commande_dimmer ›) }} »
      mode: single

Peut-être dois-je avoir une erreur, je ne vois pas où.

Alors que si je met un chiffre à la place de « {{ states(‹ sensor.commande_dimmer ›) }} », cela fonctionne parfaitement.

Merci par avance pour votre aide.

Une fois cette dernière étape passée, tout sera fonctionnelle.

Eric

Je te conseilles de copier tout ce qui est code ou script ou yaml en utilisant les balises « texte préformaté » dans le menu ci-dessus:
image

Car là c’est impossible de te dire si le yaml que tu as copié est bon…
J’ai testé ça par exemple dans une automatisation, ça marche bien…

  - service: light.turn_on
    data:
      brightness_pct: "{{ states('input_text.essai') }}"
    target:
      entity_id: light.lampe_plafond_bureau

Alexandre, désolé, je ne savais pas comment faire…

Merci pour ton aide. Je regarde et te, vous, dit .

Eric

Texte mis en forme Alexandre, c’est bon là ?

- id: '1677855143248'
  alias: essai modulation ecs
  description: ''
  trigger:
  - platform: numeric_state
    entity_id: sensor.commande_dimmer
    above: 25
  condition: []
  action:
  - type: light.turn_on
    device_id: 7431f7ea19ca6f6840fa8fe816578f05
    entity_id: light.modul_ecs_dimmerized_light
    domain: light
    data_template:
    brightness_pct: '{{ states(''sensor.commande_dimmer'') | int }}'
  mode: single

Dans les actions qui appellent des services, généralement je choisis l’entité directement et pas l’appareil. Le yaml est plus simple je trouve.
Mais je pense que c’était une histoire de ' et de "

Essaye ça:

- id: '1677855143248'
  alias: essai modulation ecs
  description: ''
  trigger:
  - platform: numeric_state
    entity_id: sensor.commande_dimmer
    above: 25
  condition: []
  action:
  - type: light.turn_on
    data:
      brightness_pct: "{{ states('sensor.commande_dimmer') | int }}"
    target:
      entity_id: light.modul_ecs_dimmerized_light
  mode: single

Bonjour à toutes et à tous,

Ca y est, ça marche !!!

Voici mon code:

- id: '1677855143248'
  alias: Modulation ECS Surplus
  description: ''
  trigger:
  - platform: numeric_state
    entity_id: sensor.commande_dimmer
    above: 25
  condition: []
  action:
  - data_template:
      brightness_pct: "{{ states('sensor.commande_dimmer') | int }}"
      entity_id: light.modul_ecs_dimmerized_light
    service: light.turn_on

Cela fonctionne parfaitement, à un détail près…

Les délais de réaction de toutes ces informations: entre 5 sec et 1 minutes !!!

Pour une réactivité de gestion de puissance, ce n’est absolument pas bon du tout !!!

Comment faire ?

Sur la configuration de mon routeur solaire, j’ai cette ligne qui fait référence à l’interval de scan:

from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, CONF_NAME, CONF_SCAN_INTERVAL)

Est-ce cette configuration qu’il faille modifier ? Si oui, où se trouve-t-elle ?

Dans tous les cas, je vous remercie tous pour votre aide qui m’a été super précieuse !!!

Eric

Donc je viens de trouver une raison des latences énormes qui caractérise ma commande de modulation: la communication entre de data logger ( de chez solarman ) et l’intégration dans HA: environ entre 30 sec et 1 minutes…

Donc je laisse tomber la piste de la récupération de l’info de l’onduleur, pour me concentrer sur l’acquisition du sens de la puissance: entrant ou sortante.

J’ai un PZEM 004T mais il ne donne pas le sens… dommage.

Donc je regards ailleurs.

Dans tous les cas j’ai 95% du taff qui est fait maintenant.

Et je vous en remercie tous.

Eric

Salut,

ça ressemble au code python d’une intégration, le fait que ça disse CONF_ ferait penser que c’est un paramètre… donc si tu pouvais partager l’intégration que tu utilises ça pourrait aider pas mal. Et c’est surement dans la doc.

Je ne sais pas quelle fréquence tu cherches à atteindre, mais attention à l’exposition de la base de données et des potentiels impacts sur HA que ça peut avoir.

Alexhass,

comment partager l’intégration ?

Eric

Je ne sais pas, comment as tu connecté ton routeur?

Dans Paramètres > Appareils & Services > Intégrations, il y a une tuile dédiée?
C’est sous quel nom?
C’est une intégration custo qui vient de HACS?
Si oui, la ligne de code « from homeassistant… » tu l’as récuprée où?

Bonjour AlexHass:

Il s’agit de l’intégration Solarman, récupérée sur HACS:

Voici un extrait d’un des fichiers de paramétrages:

On voit ligne 16 CONF_SCAN_INTERVAL

Le fichier dans config.yaml

Capture

Voilà tu sais tout !!!

Eric

Ben là si t’as l’option et que ça ne se met pas à jour toutes les 10secondes c’est ptet que l’onduleur ne fournit pas de nouvelles valeurs…
Sinon c’est oujours possible d’ouvrir une issue sur le github de l’intégration pour demander…

Bonjour à toutes et à tous,

ça c’est en cours.

Par contre, j’ai réussi à brancher mon dimmer et à le piloter en fonction de mon surplus.

Le seul truc, j’ai un problème de codage. Je m’explique:

Je relève mon surplus solaire.

Je calcul le % de dimming à appliquer et je l’envois.

Seulement, de ce fait, le surplus solaire chute, car il est consommé.

Et de ce fait, le calcul se basant sur le nouveau surplus, qui a donc baissé, j’ai un nouveau calcul de dimmer qui est proche de zéro.

Et cela arrête pas de faire le yoyo…

Donc pas très efficace !!!

J’en appelle donc à votre aide une fois de plus.

Malheureusement, cette année est très particulière pour moi, et le temps me manque énormément pour me plonger dans ces recherches.

A charge de revanche.

Eric

Bonjour Éric
Là, il va falloir pondérer la boucle de reaction, autrement dit mettre du PID, sinon la boucle n’arrivera pas a s’asservir sur la consigne demandee, voire même diverger…

Après je m’interroge sur l’utilité d’un tel projet? Si c’est pour le fun, pour quoi pas, mais bon vu que la puissance instantanée peut varier bien plus de 50 fois par seconde… Que dire d’une boucle dont l’échantillonnage dépasse les dizaines de secondes ( ou j’ai loupé une information dans la discussion…)
Il faut mieux un routeur(externe), fait pour ça et le monitorer en mqtt ou autre…

Cordialement

1 « J'aime »

Bonsoir Xtofe,

Ouh là, ça se complique dur pour moi là.

J’ai regardé les programmations de André F1atb.fr et de profes’solaire. Je n’ai pas cru voir de PID.

Malheureusement, j’ai la tête franchement ailleurs cette année. Et le très peu de temps qu’il me reste de temps je le partage avec ma famille, et le reste sur mon routeur solaire ( et encore, cela fait 1 semaine que je n’uy ai pas touché )…

Après l’utilité, ben comment dire, je n’ai pas besoin d’une précision extreme: toutes les secondes ou 2, moi perso, ça me va. C’est juste pour absorber les passages nuageux et autres micro-ondes et plaque de cuisson du midi.

En attendant la batterie de stockage et de lissage…

Après routeur externe, le ballon est dans une pièce, et le tableau électrique dans une autre…