MultivanPi Teil 9: Die EcoFlow im Dashboard – Vom Endgegner zur Lösung

Die Energieversorgung ist das Herzstück eines jeden Camper-Ausbaus. Für den MultivanPi sollte meine EcoFlow Delta 3 Plus nahtlos in das zentrale Dashboard integriert werden: Batteriestand ablesen, 220V-Wechselrichter einschalten, USB-Ports steuern. Was in der Theorie nach einem simplen Datenabruf per MQTT klang, entwickelte sich in der Praxis schnell zu einem echten Endgegner.

Der steinige Weg: Verschlüsselung und Protobuf

Frühere Powerstations ließen sich über einfache, lesbare JSON-Befehle auslesen. EcoFlow hat bei der neuen Delta 3 Serie die Sicherheit jedoch massiv angezogen. Zwar konnte ich mich erfolgreich am MQTT-Server von EcoFlow anmelden, doch der Datenstrom bestand nur aus kryptischen Zeichenketten. EcoFlow nutzt mittlerweile „Protobuf“ (Protocol Buffers) zur Datenkomprimierung und sichert sensible Befehle, wie das Schalten der Relais, zusätzlich mit einer AES-128 Verschlüsselung ab.

Für mein schlankes Python-Backend bedeutete das: Der Ladezustand lässt sich mit viel Aufwand noch in Echtzeit aus dem Datenstrom fischen, aber aktive Schaltbefehle werden vom Server schlichtweg ignoriert, da mir der passende kryptografische Schlüssel fehlt. Ein komplettes Reverse-Engineering der Firmware in meinem Python-Skript wäre viel zu anfällig für zukünftige Updates gewesen.

Warum nicht einfach die App nutzen?

Natürlich gibt es die offizielle EcoFlow-App. Aber das Ziel des MultivanPi ist es, alle Systeme (Victron, Klima, Lage-Sensoren, Kühlbox und eben die Batterie) auf einem einzigen, offline-fähigen Display zusammen zu führen. Ein ständiger Wechsel zwischen verschiedenen Apps auf dem Smartphone iat nicht nur aufwendig, sondern auch Zeitaufwendig. Ich wollte auch nie alle Parameter im MultivanPi ausgeben, bzw. steuern, sondern nur die, die auch Sinn machen.
Beispiel Solarladeregler: Wenn ich das Fahrzeug parke, dann kann ich durch die Anzeige der Solarleistung die Ladeleistung optimieren, z.B., indem ich einen anderen Parkplatz wähle oder – beim Freistehen – das Fahrzeug zur Sonne hin ausrichte. Dafür jedesmal das Smartphone rausholen und die App öffnen, ist aufwendig. Hier punktet der MultivanPi, denn die Leistung ist mit einem einzelnen Tap (ggf. einem zweiten, um das Display aufzuwecken) auf das TouchDisplay abzulesen.
Will ich auswerten, wie viel Solarstrom ich über die letzten 30 Tage geerntet habe, dann mache ich das, wenn ich Muße dazu habe. Dafür nutze ich die Victron-App.
Klar, ich könnte die Daten auch erfassen. Aber alles, was man doppelt hat, muss man auch doppelt verarbeiten/verwalten. Und das macht es wieder fehleranfällig.

Die Lösung: ioBroker als (unsichtbarer) Dolmetscher

Nachdem ich in vier Ansätzen, das Protokoll selbst zu entschlüsseln, gescheitert bin, habe ich mich für einen anderen Lösungsansatz entschieden: Anstatt das Rad neu zu erfinden, habe ich mir das Wissen der Open-Source-Community zunutze gemacht. Die Lösung war die Installation von ioBroker als reinen Hintergrunddienst (headless) auf dem Raspberry Pi.

Die Entwickler des ioBroker-Adapters für EcoFlow haben die Entschlüsselung bereits perfekt gelöst und halten sie bei Firmware-Updates aktuell. Der Ablauf sieht nun so aus:

  • Der ioBroker loggt sich mit den App-Zugangsdaten bei EcoFlow ein.
  • Er übernimmt die komplette AES-Ver- und Entschlüsselung im Hintergrund.
  • Über den ioBroker-Adapter „Simple RESTful API“ stellt das System die fertigen Werte lokal im Netzwerk bereit.

An sich wollte ich nur so wenig Software wie nötig auf dem Raspberry installieren, hier habe ich mich mit der headless-Lösung für einen Kompromiss entschieden. Die Alternative dazu wäre gewesen, auf die Implementierung der EcoFlow Delta 3plus im MultivanPi zu verzichten.

Die Brücke zum Dashboard

Mein MultivanPi Python-Backend muss damit auch nicht mehr mit komplexer Kryptografie kämpfen. Es sendet lediglich einen simplen HTTP-Request an den lokalen ioBroker. Ein Befehl wie http://127.0.0.1:8087/set/ecoflow-mqtt...cfgAcOutOpen?value=true reicht aus, und sofort klickt das Relais meiner EcoFlow und die 220V-Steckdose liefert Strom.
Ich kann nun über das Dashboard quasi während der Fahrt, die 220V-Steckdosen, die 12V-Steckdose und/oder die USB-Ports ein-und ausschalten und damit Aktionen auslösen.

Mein MultivanPi Projekt hat damit den vollen Funktionsumfang, den ich  geplant hatte, erreicht. Nun geht es daran, das Ganze zu testen, weiter zu optimieren, evtl. noch nach Stromsparpotential zu schauen.
Die nächsten Schritte: Aus der aktuellen Lochrasterplatine mit provisorischer Verdrahtung einen HAT zu machen, der auf den IO-Bus des Raspberry Pi aufgesteckt wird. Anspruchsvoll wird hier, mit Hilfe von Ferriten, Spulen, Kondensatoren und gezielt eingesetzter Masse-Flächen das System geben Störungen von außen abzuschirmen und gleichzeitig auch die Störungen, die der Raspberry verursacht, zu eliminieren.
Anschließend muss noch ein passendes Gehäuse gezeichnet und gedruckt werden, um dem MultivanPi in den Multivan zu integrieren.
Der letzte Schritt wird dann die Dokumentation und die Bereitstellung des Projekts auf GitHub sein.