Recuperer les informations des panneaux solaires BEEM

Milles merci …
Ca fonctionne toujours pas mais j’avance.

la récupération du token n’est pas instantané.
c’est pour cela que dans un de mes précèdent message je t’avais indique de modifier le scan_interval

ça a l’air d’être des secondes d’après la doc

re,

La question me trottine c’est que mon installation est sur un routeur wifi connecté à ma box wifi qui fonctionne bien avec l’appli sur mon portable mais est ce que Haos le récupère convenablement ?*
Voila…

Bonjour à tous,

J’ai trouvé, merci a vous tous pour vos aides…

Salut
tu peux en dire plus ?
ça pourrait aider d’autres personnes

Bonsoir à tous,

Dans configuration.yaml , j’avais :

packages: !include_dir_merge_named includes/packages

Et en cherchant pour autre chose, j’ai vu que sur une config pour package, la ligne était ecrit comme celle ci-dessous, donc j’ai essayé et la le token est rentré et j’ai pu créer ma car entité.

packages: !include_dir_merge_named packages

J’ai un gros mal de crâne mais cela fonctionne.
Bonne soirée.

Bonjour,

Petite question : ts les mois faut il changer le post data ? ( mois année )
Bon dimanche.

Bonjour

Oui c’est c’est cela

bon dimanche aussi

Bonjour,

Merci pour le tuto ! En lisant tout bien scrupuleusement, tout à fonctionné du 1er coup :slight_smile:

Petite question tout de même : n’est-il pas possible d’automatiser la mise à jour du payload via un script ou autre ?

Pourrait-on également avoir la remontée de l’historique de production mensuelle, annuelle, journalière,… ?

Merci.

Bonne journée

Bonjour

Pour ta première question ca doit etre possible, mais c’est en dehors de mes compétences.

Pour ta deuxième quewtion,
Je t’invite a configurer des utility meter,

En utilisant le sensor.total_day

Il y a plein d’exemples sur le forum.
Je suiscen mode dégradé donc je ne suis pas en mesure de te faire La réponse

Hello,

je viens de mettre en place ce tuto, merci topissime.
mais car il doit y avoir un mais: je ne recupere les infos que d’une seule beembox, la deuxieme qui est avec une extension ne remonte pas.
avez vous des idées?
Merci

Bonjour
Désolé mais je ne suis pas dans cette situation.

Solution trouvée :slight_smile: il suffit de doubler le code et de nommer les kits en 1 et 2

J’ai trouvé la solution grace a au post en debut de thread ou la solution se trouve en fin.

Petit update pour mettre à jour le mois et l’année :

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_template: >
      {
        "month": "{{ now().month }}",
        "year": "{{ now().year }}"
      }
    scan_interval: 3600
    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":"!secret beem_email","password":"!secret beem_password"}' 
         | jq .accessToken) && token=${token//\"} && echo $token && sed -i "s/\(beem_token:\)\(.*\)/\1 Bearer $token/" /config/secrets.yaml
       name: beem_token
       scan_interval: 3600

Hello,

Petite erreur dans le snippet

Ça ne fonctionne pas :

payload_template: >
  {
    "month": "{{ now().month }}",
    "year": "{{ now().year }}"
  }

Ça fonctionne :

payload_template: >
  {
    "month": {{ now().month }},
    "year": {{ now().year }}
  }

Explication

  • Avec guillemets doubles («  »):
    • Les valeurs {{ now().month }} et {{ now().year }} sont traitées comme des chaînes de caractères, ce que l’API peut ne pas accepter car elle attend des chiffres.
  • Sans guillemets doubles:
    • Les valeurs sont traitées comme des nombres, ce qui est le format attendu par l’API.

Résumé

  • Sans guillemets : Traité comme un nombre.
  • Avec guillemets : Traité comme une chaîne de caractères.

Utilisez :

payload_template: >
  {
    "month": {{ now().month }},
    "year": {{ now().year }}
  }

Pour envoyer des nombres, comme attendu par l’API de beem.

Bonjour à tous
Est ce que ça fonctionne toujours de votre coté ?
J’essaie de mettre en place chez moi sans succès. Impossible de trouver le bearer token …
Par contre je découvre une clé API…

API BEEM

Salut

le token est recuperé automatiquement et inséré dans secrets.yaml

voila ce que j’ai mi dans password.yaml

Use this file to store secrets like usernames and passwords.

Learn more at Storing secrets - Home Assistant

some_password: welcome

beem_token: Bearer
apres un certain temps le token sera integré a la suite de Bearer

essaye de faire [quote=« Frederic_TRAVERS, post:29, topic:26011, full:true »]
J’ai trouvé. J’ai modifié le Scan_interval à 60 et ça réactualise les données.
[/quote]

pour creer le token mais ensuite remet la valeur du scan interval a 84600 comme initialement definit

Merci beaucoup !

Malheureusement ça ne fonctionne pas chez moi …
j’ai le retour d’état suivant pour chacun des sensors : unavailable

J’ai pourtant, a priori bien suivi le tuto

ajouter ceci dans le fichier config.yaml

homeassistant: 
  packages: !include_dir_named packages

Puis créé le dossier package pour créé le fichier beem.yaml avec le code suivant :

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":8,"year":2024}'

# 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\":\"mail@gmail\",\"password\":\"password"}" | 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

J’ai bien le code Bearer completer dans le fichier secret.yaml
:frowning:

Salut
je t’ai copie l’intégralité de mon fichier 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
    unique_id: 202408250001
    
    
  - 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
    unique_id: 202408250002    
    
  - 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
    unique_id: 202408250003
#rest:
#  - resource_template: https://api-x.beem.energy/beemapp/box/summary 
#    method: POST
#    headers:
#      Content-type: application/json
#      Authorization: !secret beem_token
#    payload: '{"month":8,"year":2024}'
#    scan_interval: 30
#    sensor:
#      - name: "beem"
#        json_attributes_path: "$[0]"
#        json_attributes:
#          - "totalMonth"
#          - "wattHour"
#          - "totalDay"
#        value_template: 'OK'

rest:
  - resource_template: https://api-x.beem.energy/beemapp/box/summary
    method: POST
    headers:
      Content-type: application/json
      Authorization: !secret beem_token
    payload_template: >
      {
        "month": {{ now().month }},
        "year": {{ now().year }}
      }
    scan_interval: 3600
    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\":\"monemail@toto.com\",\"password\":\"motdepasse\"}" | jq .accessToken) && token=${token//\"} && echo $token && sed -i "s/\(beem_token:\)\(.*\)/\1 Bearer $token/" /config/secrets.yaml'
       name: beem_token
       scan_interval: 3600

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

n’oublie pas de modifier ligne 72 ton mot de passe et ton password

as tu une chaine de caractère a rallonge dans ton homeassistant/secrets.yaml apres le

beem_token: Bearer

J’ai changé le code avec le tiens.

Même résultat
Les sensors apparaissent et peuvent être ajouté sur la carte energie.
Retour d’état : unavailable
J’ai bien une chaine de caractère a rallonge dans secrets.yaml apres le

beem_token: Bearer