Ecoflow mit Bluetooth

smarthome homeassistant solar linux

Vor ein paar Tagen habe ich noch geschrieben, dass ich mal schauen müsste, ob es nicht inzwischen homeassistant-Plugins gibt, um Ecoflow per Bluetooth anzubinden. Und was soll ich sagen: ja, es gibt ein Add-on, welches auch meine Geräte (Powerstream und Delta2Max) unterstützt: ha-ef-ble. Es lässt sich leicht über HACS installieren, bietet zwar nicht alle Sensoren und Schalter wie das Cloud-Plugin, aber die relevanten Sensoren, um die Einspeisung zu steuern oder die Ports an der Delta2Max zu schalten sind vorhande, wie auch die relevanten Verbrauchswerte. Im Prinzip das, was man auch über die App sehen und steuern kann. Andere Werte wie Ladezustand der Zellen, StateOfHealth, Anzahl der Ladezyklen etc. sind (aktuell?) nicht vorhanden. Ob das jetzt wichtig ist, sei dahingestellt.

Damit ha-ef-ble funktioniert braucht man leider eine etwas obskure UserID von Ecoflow, die man entweder mit ziemlichem Gepopel im Developermode des Browsers aus der Ecoflow-Webseite herausstochern kann, oder man nutzt nach der Installation des Plugins den Konfigurationsdialog in homeassistant und meldet sich dort einmal mit seinen Ecoflow-Daten an, damit das Plugin einem die UserID ausliest.

Da Bluetooth naturgemäß nur eine begrenzte Reichtweite hat und mein RaspberryPi ein bisschen zu weit weg ist, um eine stabile Verbindung zu haben, braucht es noch einen weiteren Helfer: einen ESP32-Bluetooth-Proxy von ESPHome. Dazu einen ESP32 hernehmen und mit dem BluetoothProxy-Image flashen und ins WLAN einbinden. Zur weiteren Konfiguration gibt es mehrere Möglichkeiten: einmal den ESPHome Device Builder für homeassistant. Dummerweise eine "App" und der Appstore von homeassistant geht nicht, wenn man homeassistant per Docker laufen hat... Also PlanB: das Ding so installieren und von der Kommandozeile aus starten. Dazu braucht es Python > 3.11

# Virtuelles Environment erstellen und aktivieren
python3 -m venv venv
source venv/bin/activate

# Abhängigkeiten installieren
pip install tornado esptool

mkdir config

# Dashboard startenm, "config" ist hierbei ein beliebiger Ordner, in dem die Konfiguration abgelegt werden soll
esphome dashboard config

Anschließend läuft auf Port 6052 ein Webdienst, der alle im WLAN befindlichen ESPHome-Systeme zur Konfiguration bereitstellt.

esphome-config.png

Über "Edit" kann dann die Konfiguration angepasst werden. Wichtig sind auch die Security Best Practices - wichtig sind ein individueller API-Key und der Schutz der Over-the-air Konfigurationsfunktion. Die in der yaml-Datei referenzierten Passwörter werden unter dem Reiter "Secrets" in einer separaten Datei verwaltet.


substitutions:
  name: esp32-bluetooth-proxy-27cc44
  friendly_name: Bluetooth Proxy 27cc44
packages:
  esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/esp32-generic/esp32-generic.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
api:
  encryption:
    key: e............................F=

ota:
  - platform: esphome
    password: !secret device_name_ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

esp32_ble_tracker:
  scan_parameters:
    active: true

bluetooth_proxy:
  active: true
  # 1 connection per proxy - it's much more stable this way. Concurrent connections has tendency to fail. 
  # Das ist eine Empfehlung aus dem Forum; bei mir scheint es auch ohne zu gehen.
  #connection_slots: 1 

Anschließend die Konfiguration auf dem ESP32 speichern, neu starten und dann kann dieser über die ESPHome-Integration in Homeassistant hinzugefügt werden. Wenn das Gerät nicht automatisch gefunden wird, kann man es auch manuell hinzufügen. Dazu braucht es dann die IP-Adresse, die man über die o.g. Webseite in den Logs leicht finden kann.

esphome-proxy.png

Damit sollte das Gerät dann auch als Bluetooth-Device in der Bluetooth-Integration auftauchen:

bluetooth-proxy.png

Vorheriger Beitrag