Recuperer les informations des panneaux solaires BEEM

Bonjour

a ceux qui sont equipés de panneaux solaires BEEM
j’ai trouvé cela

Hello,

Je n’ai pas trouvé d’infos complémentaires ici sur beem2mqtt ( un petit lien serait possible ? )
Je suis en pleine install et je suis tombé sur ce message au fil de mes lectures.

Merci :wink:
cdt

Salut

j’avais trouvé cela

https://lunarok-domotique.com/2023/01/beem-energy_presentation/

mais je ne suis pas allé plus loin…

1 « J'aime »

Bonjour, tu peux acheter ou te faire un boitier OpenDTU puis remonter les info via MQTT

[tbnobody/OpenDTU: Software for ESP32 to talk to Hoymiles Inverters (github.com)](https://github.com/tbnobody/OpenDTU)

ensuite pour aller plus loin j’ai utiliser le Tuto de Felix62

[[Tuto] Optimiser la gestion de sa production Solaire - Home Assistant - Tutoriels & Partages / Template / Jinja - Home Assistant Communauté Francophone (hacf.fr)](https://forum.hacf.fr/t/tuto-optimiser-la-gestion-de-sa-production-solaire/22834)

Salut @ToyN

merci pour le lien
j’ai déjà foultitudes d’esp qui sont utilisés à la maison…
là avec quelques lignes de code…
ça fonctionne. et ça répond a mes besoins

bonne journée

1 « J'aime »

Pour ceux qui veulent le code

j’ai mis ça dans un package appelé beem.yaml

template:
- sensor:
  - name: post_data
    state: '{"month":{{now().strftime("%m").lstrip("0")}},"year":{{now().strftime("%Y")}}}'
    
    
    
  - name: total_month
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: total_increasing
    state: "{{ state_attr('sensor.beem','totalMonth') | float/1000 }}"
    icon: mdi:solar-power
    
    
  - name: total_day
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: total_increasing
    state: "{{ state_attr('sensor.beem','totalDay') | float/1000 }}"
    icon: mdi:solar-power
    
    
  - name: watt_hour
    unit_of_measurement: "Wh"
    device_class: energy
    state_class: total_increasing
    state: "{{ state_attr('sensor.beem','wattHour') | float/1 }}"
    icon: mdi:solar-power

rest:
  - resource_template: https://api-x.beem.energy/beemapp/box/summary 
    method: POST
    headers:
      Content-type: application/json
      Authorization: !secret beem_token
    payload: '{"month":9,"year":2023}'

# le payload month est a mettre a jour tous les mois pour recuperer les bonnes valeurs.

    scan_interval: 30
    sensor:
      - name: "beem"
        json_attributes_path: "$[0]"
        json_attributes:
          - "totalMonth"
          - "wattHour"
          - "totalDay"
        value_template: 'OK'

command_line:
   - sensor:
       command: 'token=$(curl https://api-x.beem.energy/beemapp/user/login -X POST -H "Content-Type: application/json" --data-raw "{\"email\":\"toto@gmail.com\",\"password\":\"mot-de-passe\"}" | jq .accessToken) && token=${token//\"} && echo $token && sed -i "s/\(beem_token:\)\(.*\)/\1 Bearer $token/" /config/secrets.yaml'
       name: beem_token
       scan_interval: 84600

shell_command:
  beem: sed -i "s/\({{cmd}}:\)\(.*\)/\1 '{{ states.sensor.post_data.state|to_json }}'/" /config/configuration.yaml
1 « J'aime »

Salut jrvrcd,

J’ai repris ton code mais malheureusement, au test de la conf, ça me remonte l’erreur suivante:

expected a dictionary for dictionary value @ data['packages']['template']

Bon je débute ici mais j’ai pensé à un problème d’indentation…

Salut

Comme ça fait bientôt 3 mois que ça tourne comme cela a la maison, je pense qui’ il est nécessaire de rajouter une ligne dans le fichier /config/secrets.yaml

il faut rajouter un item a la fin de ce fichier

beem_token:

je pense que c’est la que ça coince

merci de confirmer

Salut,

Merci pour ton retour, alors le token c’est ok. le problème c’est que visiblement je ne sais pas comment organiser mon arbo packages et comment déclarer ca correctement dans le configuration.yaml.

Vais devoir bouquiner encore un peu :frowning:

Salut

j’utilise les packages
c’est a mon avis plus lisible
lire cela

et plus particulièrement create a packages folder

dans ton configuration.yaml
tu rajoutes les deux lignes suivantes

homeassistant: 
  packages: !include_dir_named packages

puis il te faudra creer un dossier

packages

dans ce dossier

tu y colles intégralement le code que j’ai donner plus haut…
dans un fichier beem.yaml par exemple

Merci beaucoup, j’avais donc bien capté ceci. J’ai ajusté exactement comme tu le recommande et ça marche.

Maintenant, j’ai aussi ce package qui était installé: [TUTO] - Gestion de sa piscine avec sonde iopool

Le configuration.yaml côté package était alors ce qu’avait préconisé @mguyard, l’ensemble parfaitement fonctionnel et jolie. :

homeassistant:
  # Load packages
  packages: !include_dir_merge_named includes/packages

J’ai pourtant bien essayé de faire cohabiter les deux en suivant la doc (Que je ne maitrise pas encore) mais impossible. Ceci dit, maintenant Beem fonctionne, mais pas Iopool (Bien entendu, j’ai ajusté le chemin et ou créé les dossiers au besoin):stuck_out_tongue:

Hello,

Repasse en inclide_dir_merge_named comme je le recommande dans mon tuto iopool et modifie ton beem.yaml ainsi :

beem:
  template:
    - sensor:
      - name: post_data
        state: '{"month":{{now().strftime("%m").lstrip("0")}},"year":{{now().strftime("%Y")}}}'
        
        
        
      - name: total_month
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        state: "{{ state_attr('sensor.beem','totalMonth') | float/1000 }}"
        icon: mdi:solar-power
        
        
      - name: total_day
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        state: "{{ state_attr('sensor.beem','totalDay') | float/1000 }}"
        icon: mdi:solar-power
        
        
      - name: watt_hour
        unit_of_measurement: "Wh"
        device_class: energy
        state_class: total_increasing
        state: "{{ state_attr('sensor.beem','wattHour') | float/1 }}"
        icon: mdi:solar-power

  rest:
    - resource_template: https://api-x.beem.energy/beemapp/box/summary 
      method: POST
      headers:
        Content-type: application/json
        Authorization: !secret beem_token
      payload: '{"month":9,"year":2023}'
      # le payload month est a mettre a jour tous les mois pour recuperer les bonnes valeurs.
      scan_interval: 30
      sensor:
        - name: "beem"
          json_attributes_path: "$[0]"
          json_attributes:
            - "totalMonth"
            - "wattHour"
            - "totalDay"
          value_template: 'OK'

  command_line:
    - sensor:
        command: 'token=$(curl https://api-x.beem.energy/beemapp/user/login -X POST -H "Content-Type: application/json" --data-raw "{\"email\":\"toto@gmail.com\",\"password\":\"mot-de-passe\"}" | jq .accessToken) && token=${token//\"} && echo $token && sed -i "s/\(beem_token:\)\(.*\)/\1 Bearer $token/" /config/secrets.yaml'
        name: beem_token
        scan_interval: 84600

  shell_command:
    beem: sed -i "s/\({{cmd}}:\)\(.*\)/\1 '{{ states.sensor.post_data.state|to_json }}'/" /config/configuration.yaml

Et restart HA.
Ca devrait passer.

En fait en utilisant include_dir_merge_named il faut t’assuré de nommé le package au debut. Ce que j’ai fais a la premiere ligne de ce que je propose ici.

J’avais pourtant compris et tester ça, j’ai du m’emmêler les pinceaux entre merge ou non.

Un grand merci à vous deux, ça marche parfaitement !

Hello, merci pour toutes ces infos. J’ai suivi vos conseils pour les packages et le config.yaml…

Mais question bête…comment faire pour remonter toutes ces infos dans mon dashboard ? Merci d’avance !

Salut

en utilisant le code ci dessus
tu vas en fait créer trois nouvelles entités
a l’occurrence

sensor.watt_hour
sensor.total_day
et
sensor.total_month

dans ton dashboard,
tu te mets en mode modification et
tu auras la possibilité de rajouter une carte entité
tu devras y rajouter a la main les rois entités précédemment créées

tu valides. et voila.

tu peux aussi vérifier avant que tes entités existent
en regardant dans:
outils de développement
onglet état

Merci pour la réponse rapide !

J’ai vérifié et en effet les entités ne remonte pas.

Pour essayer dans configuration.yaml j’ai fait : « sensor: !include_dir_merge_named includes/packages » et j’ai mis le sensor.yaml dans le packages avec beem.yaml mais ça ne fonctionne pas nomplu.

Je ne comprend pas à quel moment les infos de beem.yaml remonte en fait :smiley:

As tu verifié la validité de ton configuration.yaml et des dépendances ( le fameux include machin chose.
Si c’est fait et que cela ne retourne pas d’erreurs. Un redémarrage de ha est recommandé

Oui j’ai bien vérifié mon code et reboot HA plusieurs fois mais rien y fait. Je dois mal faire quelques chose à un endroit mais quoi…Beem.yaml est appelé avec quel bout de code au final ? Je n’arrive pas à comprendre comment les sensor sont censé remonter ?
Merci pour l’aide !

Julien

Hello

tu as pensé a rajouter dans le fichier /config/secrets.yaml ?

beem_token:

d’après ce que je comprends le token est recuperé
par les lignes suivantes

command_line:
   - sensor:
       command: 'token=$(curl https://api-x.beem.energy/beemapp/user/login -X POST -H "Content-Type: application/json" --data-raw "{\"email\":\"toto@gmail.com\",\"password\":\"mot-de-passe\"}" | jq .accessToken) && token=${token//\"} && echo $token && sed -i "s/\(beem_token:\)\(.*\)/\1 Bearer $token/" /config/secrets.yaml'
       name: beem_token
       scan_interval: 84600

bien entendu
la mise a jour des sensors proprement dit est faite je pense par le pooling qui semble être défini toutes les 30 ( ??? )

J’ai repris tout à zero et ça y est ça fonctionne ! génial ! Merci pour ton aide.

Depuis l’onglet « conso » de beem j’ai raccordé mon Linky, est-ce que quelqu’un sait si c’est possible de remonter ces infos dans HA ? Ça éviterait de devoir mettre un Lixee ou autre…