Hello!
Je partage ici le package que j’ai fait pour récupérer les informations de ma batterie Beem Energy. C’est loin d’être parfait parce qu’il faut pouvoir récupérer son identifiant de batterie pour que ça fonctionne (change le <id>
, le <email>
et le <password>
). Il doit y avoir moyen d’automatiser la récupération de l’ID de la batterie, mais je préfère creuser le MQTT que l’appli a l’air d’appeler pour voir son peut récupérer les données en temps réel. Faudra aussi que je scanne les ports de la batterie pour voir si on peut pas s’y connecter localement.
rest:
- resource_template: https://api-x.beem.energy/beemapp/batteries/<id>/live-data
headers:
Content-type: "application/json"
Authorization: !secret beem_token
scan_interval: 60
sensor:
- name: "Battery power"
unique_id: beem_battery_power
force_update: true
device_class: power
unit_of_measurement: "W"
icon: mdi:battery-charging-100
value_template: "{{ value_json['batteryPower'] }}"
- name: "Beem meter power"
force_update: true
unique_id: beem_meter_power
device_class: power
unit_of_measurement: "W"
icon: mdi:meter-electric
value_template: "{{ value_json['meterPower'] }}"
- name: "Beem solar power"
unique_id: beem_solar_power
force_update: true
device_class: power
unit_of_measurement: "W"
icon: mdi:solar-panel
value_template: "{{ value_json['solarPower'] }}"
- name: "Beem active power"
unique_id: beem_active_power
force_update: true
device_class: power
unit_of_measurement: "W"
icon: mdi:lightning-bolt
value_template: "{{ value_json['activePower'] }}"
- name: "Charge batterie"
unique_id: beem_soc
force_update: true
device_class: battery
unit_of_measurement: "%"
value_template: "{{ value_json['soc'] }}"
- name: "Beem énergie exportée"
unique_id: beem_total_energy_exported
force_update: true
device_class: energy
state_class: total
unit_of_measurement: "kWh"
icon: mdi:home-export-outline
value_template: "{{ value_json['totalEnergyExported'] }}"
- name: "Beem énergie importée"
unique_id: beem_total_energy_imported
force_update: true
device_class: energy
state_class: total
unit_of_measurement: "kWh"
icon: mdi:home-import-outline
value_template: "{{ value_json['totalEnergyImported'] }}"
- name: "Beem énergie chargée"
unique_id: beem_total_energy_charged
force_update: true
device_class: energy
state_class: total
unit_of_measurement: "kWh"
icon: mdi:battery-charging-100
value_template: "{{ value_json['totalChargedEnergy'] }}"
- name: "Beem énergie déchargée"
unique_id: beem_total_energy_discharged
force_update: true
device_class: energy
state_class: total
unit_of_measurement: "kWh"
icon: mdi:battery-charging-20
value_template: "{{ value_json['totalDischargedEnergy'] }}"
- name: "Statut batterie"
unique_id: beem_working_mode_label
value_template: "{{ value_json['workingModeLabel'] }}"
binary_sensor:
- name: "Battery working mode"
unique_id: beem_is_battery_working_mode_ok
device_class: running
icon: mdi:battery-check
value_template: "{{ value_json['isBatteryWorkingModeOk'] }}"
- name: "Battery backup mode"
unique_id: beem_is_battery_in_backup_mode
device_class: power
icon: mdi:transmission-tower
value_template: "{{ value_json['isBatteryInBackupMode'] }}"
command_line:
- sensor:
command: 'token=$(curl https://api-x.beem.energy/beemapp/user/login -X POST -H "Content-Type: application/json" --data-raw "{\"email\":\"<email>\",\"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