Intégration Beem Energy

Bonjour à tous

Grâce à l’aide de certains membres ici (un grand merci à @jrvrcd ! :wink:), j’ai pu récupérer les données de ma batterie Beem peu après son installation en juillet dernier.

Depuis, j’ai pris le temps de développer une intégration Home Assistant pour Beem Energy, que je mets aujourd’hui à disposition de la communauté. Cette intégration permet de récupérer les données liées à votre installation Beem directement dans Home Assistant.

:battery: Actuellement, seule la partie « batterie » a été testée, car c’est le seul produit dont je dispose personnellement. L’intégration fonctionne bien pour cet usage, mais j’aimerais élargir la compatibilité aux autres équipements Beem.

:test_tube: Je suis donc à la recherche de personnes possédant d’autres produits Beem pour m’aider à valider et améliorer l’intégration. Si vous êtes partants, ce serait super utile !

:package: Le lien vers l’intégration (GitHub) : GitHub - CharlesP44/Beem_Energy: Intégration Home Assistant pour Beem Energy

Merci d’avance pour votre aide et vos retours :pray:
Et n’hésitez pas si vous avez des questions ou suggestions !



L’intégration récupéré les données auprès de Beem via REST ou via MQTT ?

Rest avec un rafraîchissement toutes les x secondes.
En test depuis quelques mois maintenant (pour la batterie)

Hello, Je dispose de panneaux solaire BeemKit 420W et je serais ravi d’aider au développement de cete intégration.

Bonjour à tous
Voici le lien GitHub GitHub - CharlesP44/Beem_Energy

Bonjour à tous,

Suite à des essais pour fiabiliser l’intégration de Beem Energy dans Home Assistant, je partage ici une solution complète que j’ai mise en place chez moi.
Si ma contribution peut aider d’autres membres à récupérer leurs données de production de manière stable, j’en serais ravi :pray:

Intégration Beem Energy – Récupération dans Home Assistant

Objectif : Récupérer la production Beem sans surcharge API, avec gestion automatique du token, stockage local et capteurs personnalisés.


Pré-requis

  • Accès SSH ou File Editor dans Home Assistant
  • Un dossier /config/scripts/
  • Vos identifiants Beem (email + mot de passe)

:closed_lock_with_key: 1. Stockage des identifiants (sécurisé)

Dans secrets.yaml :

yaml

Copier / Modifier

beem_email: votre@email.fr
beem_password: votre_mot_de_passe

:closed_lock_with_key: 2. Script de récupération du token Beem

:file_folder: /config/scripts/get_tokenbeem.sh

Copier / Modifier

#!/bin/bash

email="$1"
password="$2"

token=$(curl -s -X POST https://api-x.beem.energy/beemapp/user/login \
  -H "Content-Type: application/json" \
  --data "{\"email\":\"$email\",\"password\":\"$password\"}" \
  | jq -r '.accessToken')

echo "$token"
echo "$token" > /config/beem_token.txt

3. Script de récupération de la production

:file_folder: /config/scripts/get_productionbeem.sh

bash

Copier / Modifier

#!/bin/bash

# Récupère les informations système
month=$(date +%-m)
year=$(date +%Y)

# Fichier de destination
output_file="/config/beem_data.json"

# Récupère le token stocké dans beem_token.txt
token=$(cat /config/beem_token.txt)

# Vérifie que le token n'est pas vide
if [[ -z "$token" ]]; then
  echo "Erreur : token vide" > "$output_file"
  exit 1
fi

# Appelle l'API Beem pour récupérer la production mensuelle
curl -s -X POST https://api-x.beem.energy/beemapp/box/summary \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $token" \
  --data "{\"month\": $month, \"year\": $year}" \
  -o "$output_file"

# Vérifie si la réponse contient bien "wattHour"
if ! grep -q "wattHour" "$output_file"; then
  echo "Erreur : aucune donnée wattHour dans la réponse" >> "$output_file"
  exit 1
fi

echo "✅ Données de production sauvegardées dans $output_file"


:jigsaw: 4. Déclaration des shell_command

Dans configuration.yaml :

yaml

Copier / Modifier

shell_command:
  update_beem_token: bash /config/scripts/get_tokenbeem.sh !secret beem_email !secret beem_password
  update_beem_data: bash /config/scripts/get_productionbeem.sh

:stopwatch: 5. Automatisations

Dans automations.yaml :

yaml

Copier / Modifier

- alias: "MAJ token Beem chaque nuit ou quand vous le souhaitez"
  trigger:
    - platform: time
      at: "02:00:00"
  action:
    - service: shell_command.update_beem_token

- alias: "MAJ données Beem toutes les 5 min"
  trigger:
    - platform: time_pattern
      minutes: "/5"
  action:
    - service: shell_command.update_beem_data

6. Sensor personnalisé

yaml

CopierModifier

- platform: command_line
  name: "Beem Production"
  command: "cat /config/beem_data.json"
  scan_interval: 300
  unit_of_measurement: "Wh"
  value_template: >
    {% set j = value_json.get('content', [{}])[0] %}
    {{ j.get('wattHour', 0) }}
  json_attributes:
    - power
    - totalDay
    - totalMonth
    - serialNumber
    - boxId
    - weather
  availability_template: >
    {{ 'error' not in value_json }}

7 voici ce que cela donne.

Après de nombreuses recherches, j’ai réussi à bénéficier des données de production de Beem dans Home Assistant.
Cette méthode permet de consommer l’API Beem grâce à un stockage local, une gestion sécurisée du token, et des automatisations.

Si cela peut vous aider dans votre intégration, notamment en complément de votre batterie, n’hésitez pas à vous en inspirer.
Au plaisir et bonne intégration à tous ! :blush:

1 « J'aime »

bonjour,
comment vous l’integre dans le dashboard.
merci

:wave: Bonjour,
(désolé pour mon retard de réponse :sweat_smile:)

Pour répondre à la question :
Le script get_productionbeem.sh sert à récupérer les données de production de ton installation Beem et à les enregistrer dans un fichier appelé beem_data.json (dans le dossier /config de Home Assistant).

Mais pour que ces données s’affichent dans ton dashboard Home Assistant, il faut créer un capteur personnalisé qui lit ce fichier.


Étape 1 : Créer le capteur dans Home Assistant

Dans ton fichier configuration.yaml (ou sensors.yaml si tu l’utilises), ajoute ce bloc :

Copier / Modifier

- platform: command_line
  name: "Beem Production"
  command: "cat /config/beem_data.json"
  scan_interval: 300
  unit_of_measurement: "Wh"
  value_template: >
    {% set j = value_json.get('content', [{}])[0] %}
    {{ j.get('wattHour', 0) }}

Ce capteur va afficher la production électrique mensuelle de ta box Beem, en Wh.


Étape 2 : Afficher le capteur dans ton dashboard

Va dans ton dashboard Home Assistant > clique sur « Modifier » > « Ajouter une carte » > choisis « Carte Entité », puis sélectionne sensor.beem_production.

Tu verras alors ta production Beem directement sur l’interface :blush:


  1. Le script télécharge les données Beem
  2. Le capteur lit ces données depuis un fichier
  3. Tu peux afficher ce capteur dans ton dashboard comme n’importe quel capteur

Bon courage pour la suite ! :muscle:

1 « J'aime »

Merci !

Super intéressant. J’essai de scanner le réseau de l’app mobile pour mieux comprendre les api utilisées.
Je galère a trouver l’API utilisé pour récupérer les infos extraites de l’energie switch pour savoir exactement quel est ma conso enedis et ma production excédentaire afin de mieux la calculer.
Si dans vos expérimentation vous trouvez l’endpoint de l’energy switch ça m’intéresse.

Bonjour à tous,

Une nouvelle version est disponible avec la prise en charge des capteurs MQTT de la batterie !

:arrow_right: GitHub : CharlesP44/Beem_Energy

Les capteurs pour l’intégration à l’Energy Dashboard sont aussi disponibles.
Beem Batteries, PnP et Energy Switches sont désormais pris en charge.

Je n’ai pu tester que la batterie, vos retours sur Energy Switch et PnP sont les bienvenus !

Bonjour Charly3944,

Merci pour cette intégration.

Je regarde de mon coté pour installer une solution Beem avec des batteries uniquement. Pour le moment, je ne prévois pas l’installation de panneaux solaire.

L’objectif de cette installation est de traiter dans un premier temps des défaillances du réseau d’électrique (coupures, microcoupures, …) et probablement dans un second temps de gérer la charge et la décharge des batteries en fonction du prix de l’électricité (heures pleines / heures creuses).

Je constate que l’intégration permet de suivre beaucoup de paramètres. Cependant, est-il possible de gérer les périodes de charge et décharge et de forcer ces opérations dans le temps (charge si heures creuses ou batteries vides / décharge en heures pleines ou coupure du réseau)

je te remercie d’avance pour ces précisions.

Bonjour @chklein

​La batterie fonctionne parfaitement pour les coupures de courant (j’en ai encore eu une ce lundi !).
​Je suppose que tu as un abonnement Tempo et que tu cherches à éviter de consommer pendant les jours rouges en heures pleines (HP). :grin:

​Actuellement, l’intégration ne permet pas encore de piloter ou de forcer la charge et la décharge des batteries. Seule l’application Beem propose cette fonctionnalité.
​Je prévois cependant d’étudier la possibilité d’intégrer cette fonctionnalité.

1 « J'aime »

Bonjour @chklein

Finalement, c’était plus simple à mettre en place que prévu.

Je publierai une nouvelle release très bientôt

.

2 « J'aime »

Super @Charly3944 , tiens nous informé.
De mon coté, je suis au tarif réglementé, mais compte tenu que les coupures sont maintenant de plus en plus fréquente et suite à l’installation de la domotique, ces coupures ne sont pas conseillés, je réfléchis activement à changer toute cette partie de fourniture d’électricité.

Oui l’objectif est de passer à la formule Tempo et de charger les batteries pendant les périodes creuses et les utiliser uniquement en heures creuses et pendant les jours rouges.

Il me restera à voir comment je peux m’assurer de couper l’alimentation par le réseau.

En tout cas, merci pour le travail que tu faits pour traiter les demandes.

Bonne journée.

Bonjour @chklein

Encore quelques tests pour éviter des régressions, et je publie la release.

Je pense la publier d’ici ce week-end au plus tard.

Nouvelle version de l’intégration disponible :slight_smile:

1 « J'aime »

Bonjour à tous le monde.

Je galère depuis quelques jours à estimer et afficher la différence entre la consommation réseau (lixee zlinky) et la production beem on. Le problème c’est que je n’arrive pas à récupérer et intégrer la consommation réseau pour la soustrire de la production solaire et ensuite pour mettre cette différence dans le dasboard energy au niveau de l’injection réseau.

L’idée est de faire si “production beem” - “consommation réseau” > 0 alors “production beem” - “consommation réseau” = injection réseau. Le problème majeur étant que je n’arrive pas à trouver comment créer un sensor pour le lixee zlinky qui me donne une consommation équivalente à ma production beem (Beem Energy Current Power).

En fait lorsque je suis les différents tuto ma production solaire devient 100% restitution au réseau ou la conso + la production s’additionne. J’e n’arrive pas à afficher l’excédent en valeur négative et le solaire autoconsommé + conso Linky = consommation totale.

Ce soir j’explore ça pour tenter de calculer la conso “instantanée” et de l’intégrer au calcul :

J’ai suivi ce tuto pour afficher ma consommation “instantanée” : Home Assistant : afficher sa consommation électrique en temps réel avec Zlinky - RDR-IT

Merci et belle soirée.

Bonjour @Sebastien_R2 utilises tu l’intégration Beem energy?

Il y a plusieurs points a prendre en compte.

  1. L’injection et consommation du réseau via un meter où ton zlinky dans ton cas.

  2. les panneaux photovoltaïques via un capteur de production ou meter

  3. le stockage si il y a

Une fois ces éléments renseignés dans le tableau Energy de Home Assistant (Beem = production, Zlinky = import/export réseau), HA calcule automatiquement la consommation totale de la maison (autoconsommation + réseau).

Pas besoin de créer un sensor supplémentaire, tout se fait directement via la configuration du tableau Energy

Bonne soirée

Bonsoir,

oui - j’utilise l’intégration beem energy, merci à celles et ceux qui l’ont développé d’ailleurs. Cependant, étant donné que je n’ai pas de batterie, ni de contrat de revente, la production solaire apparait comme une production consommée sur mes valeurs de suivi. J’aimerais affecter une valeur de resitution (sans contrat) de la surconsommation solaire. J’ai deux panneaux qui produisent disons 700 à 800 wh alors que la maison ne consomme que 200 à 300 wh en veille.

Je suis ma production solaire ainsi que la production de la maison du zlinky.

Ce soir j’ai mis à jour mes entrées :

Production

{% if ((states(‹ sensor.beem_energy_current_power ›)) | int(default=0) + states(‹ sensor.beem_energy_current_power_2 ›) | int(default=0)) - (states(‹ sensor.conso_zlinky_watts ›) | int(default=0)) > 0 %}
{{ ((states('sensor.beem_energy_current_power') | int(default=0) + states('sensor.beem_energy_current_power_2') | int(default=0)) - states('sensor.conso_zlinky_watts') | int(default=0)) }}

{% else %}
0
{% endif %}

Et consommation

{% if ((states(‹ sensor.beem_energy_current_power ›) | int(default=0) + states(‹ sensor.beem_energy_current_power_2 ›) | int(default=0)) - (states(‹ sensor.conso_zlinky_watts ›)) | int(default=0)) <= 0 %}
{{ ((states(‹ sensor.beem_energy_current_power ›) | int(default=0) + states(‹ sensor.beem_energy_current_power_2 ›) | int(default=0)) - (states(‹ sensor.conso_zlinky_watts ›)) | int(default=0)) * -1 }}

{% else %}
0
{% endif %}

Je les ai convertis en capteurs (j’ai uivi un tuto). J’attend de voir demain si c’est mieux quand il y aura du soleil. Je n’ai pour le moment mis que l’énergie exporté dans mon dashboard énergie. J’ai gardé mon entrée TIC ZLInKY pour l’énergie consommée.

Merci.

@Sebastien_R2

Merci pour tes précisions, c’est plus clair :+1:

Avec le Zlinky tu devrais avoir deux mesures distinctes :

  • Import (ce que tu prends au réseau),
  • Export (ce que tu réinjectes quand ta production est > ta consommation). (Même si tu n’as pas de revente)

Une fois configuré :

  • Beem = production solaire,
  • Zlinky (import) = consommation réseau,
  • Zlinky (export) = injection réseau,

alors Home Assistant affichera bien la répartition : autoconsommation + injection.

Sans capteur d’export, HA considère effectivement que toute ta production est consommée localement alors que ce n’est pas forcément le cas, ce qui explique ton souci.