Ecoflow PowerStream lokaal aansturen

Pagina: 1
Acties:

Vraag


Acties:
  • +1 Henk 'm!

  • Valkske
  • Registratie: November 2002
  • Laatst online: 21:15
Hoi. Even korte intro, dit is een afsplitsing van het klustopic "Eenvoudige thuisaccu samenstellen". Daarin gebruiken we een regelbare micro-inverter, de ecoflow powerstream. Nu heb ik thuis 2 wifi netwerken, eentje daarvan is voor smartdevices en die is afgesloten van alle rest(inclusief internet). Voor alle duidelijkheid, ik wil hier geen discussie voeren over het waarom dit device geen internet toegang krijgt.

Die microinveter blijkt nu dus (bijna) onbruikbaar zonder internet. Ik had dit nog niet meegemaakt, de meeste devices met wifi functionaliteit die ik heb, hebben één of andere locale API (al dan niet officieel). Voordeel is dat het niet eens uitmaakt of het on-officieel is, gezien de devices ook geen firmware updates krijgen, blijven ze ook gewoon werken. (if it ain't broke...)

Toeval wou dat ik net een topic op homeassistant gelezen had van iemand die met een self-signed certificate en een eigen DNS server(pihole of adguard) met een DNS rewrite rule een ander toestel zo ver gekregen had om op zijn eigen MQTT server te connecteren en hiermee te communiceren.

Een avondje later was mijn Ecoflow powerstream geconnecteerd op mijn eigen MQTT server en begon die zijn status te posten in allerhande topics.

Ik heb een github repo gestart om daarin all mijn bevindingen te publiceren:
https://github.com/tomvd/local-powerstream

En nu komt mijn vraag. Ik ben nog op zoek naar mensen die dit interessant vinden om mee verder te zoeken, bij voorkeur kennis hebben van protobuf/rpc over mqtt en een Ecoflow powerstream in bezit hebben.
Data uitlezen is geen probleem, maar we zitten vast met versturen van het command om de output power de zetten. (zie ook dit topic: https://github.com/tomvd/local-powerstream/issues/4)
Dank!

Alle reacties


Acties:
  • 0 Henk 'm!

  • Valkske
  • Registratie: November 2002
  • Laatst online: 21:15
Dit topic mag wat mij betreft op slot. Ik kan de powerstream inmiddels lokaal aansturen. Developers van oa de ecoflow home assistant plugin zijn op de hoogte, hopelijk wordt deze lokale API ook snel in die plugin ondersteund.

Acties:
  • 0 Henk 'm!

  • Septillion
  • Registratie: Januari 2009
  • Nu online

Septillion

Moderator Wonen & Mobiliteit
Misschien kan je er hier nog wat details over delen als naslag?

Acties:
  • 0 Henk 'm!

  • turbotony
  • Registratie: Januari 2012
  • Laatst online: 22:45
Ik ben ook heel benieuwd hoe dit uiteindelijk gelukt is en waar ik daar meer info van kan vinden.

...zou heel graag al mijn ecoflow devices aansturen zonder afhankelijkheid van de Ecoflow cloud

Acties:
  • 0 Henk 'm!

  • Valkske
  • Registratie: November 2002
  • Laatst online: 21:15
Zeker, hier zijn wat details als naslag:

De powerstream connecteert naar een mqtt server/broker op het adres mqtt-e.ecoflow.com. Dit adres kan je omleiden met een DNS rewrite (in bvb Adguard of pihole) naar je eigen mosquitto server.
In die mosquitto server zet je een self-signed certificate op (heb er een stapvoorstap readme hier gezet: https://github.com/tomvd/...rver/mosquitto/data/certs)
In je mosquitto conf zet je dan dit:
listener 8883
certfile /mosquitto/data/certs/certificate.pem
keyfile /mosquitto/data/certs/key.pem

En dan begint dat device protobuf commands te publishen in het /sys/.../thing/protobuf/upstream topic. De proto definities zijn gekend doordat de android app was gedecompiled, en dezelfde definities voor de communicatie van de server naar de app worden herbruikt voor de communicatie van de server naar het device, enkel de topics en sommige velden (zoals src en dst) zijn anders.
Wat hij in het upstream topic published zijn statusupdate over het device, en daarin vind je alles wat je nodig hebt, voltages, stroom,...

De belangrijkste parameter die je moet kunnen zetten in de powerstream is de basisterugleverstroom. En dat is bijna indentiek als het reeds gekende command van de app, enkel zetten we het hier in het topic /sys/.../thing/property/cmd
(als het device connect op de mosquitto server, kan je zien welke topics het subscribed en zo ben ik er achter gekomen)
(en om achter het command te komen moest ik als device zijnde connecteren op de server, daarvoor moest ik even client/user/paswoord ontfutselen van het device, maar dat is bij mqtt vrij makkelijk met een zogehete honeypot mqtt server)

Alles heb ik genoteerd op de readme van de github pagina, alsook alles van code en config heb ik gedeeld.

Veel batterijen van ecoflow sturen nog json door, in dat geval is het zelfs nog iets makkelijker om te lezen. Ecoflow is wel gekend om door firmware updates dingen meer te beveiligen (bvb sommige batterijen zijn al van json naar protobuf gewisseld), dus persoonlijk update ik de firmware van mijn powerstream nu niet meer.

Acties:
  • 0 Henk 'm!

  • turbotony
  • Registratie: Januari 2012
  • Laatst online: 22:45
Zou dit ook met de Mosquito broker van Home Assistant moeten werken?

Ik heb op HA ook adguard draaien en daar een dns rewrite toegevoegd voor mqtt-e.ecoflow.com maar ik zie in mqtt explorer niets nieuws verschijnen.

Acties:
  • 0 Henk 'm!

  • turbotony
  • Registratie: Januari 2012
  • Laatst online: 22:45
Ik gebruik nu EMQX in HA as mqtt broker en dat werkt goed. Ik zie nu de berichten van de ecoflow devices binnenkomen.

De volgende vraag is nu hoe ik de protobuf message aan kan maken in HA. Heb jij daar ervaring mee? Ik zie dat je java gebruikt om de protobuf message te maken, maar ik ben er nog niet uit hoe ik dat in HA zou kunnen doen. Tips zijn welkom!

Alvast bedankt! Het zou geweldig zijn als ik mijn powerstreams lokaal aan zou kunnen sturen....dan kunnen al mijn ecoflow devices van internet afgekoppeld worden :-)

Acties:
  • 0 Henk 'm!

  • Valkske
  • Registratie: November 2002
  • Laatst online: 21:15
Ik heb de laatste versie van mijn java app gepushed naar de github repo. Aansturen en uitlezen van mijn powerstream doe ik nu volledig lokaal.
Wat betreft protobuf messages, die gaan niet rechtreeks naar HA kunnen vrees ik. Er moet iets van python, java of nodejs applicatie tussen zitten die de vertaling gaat doen.
Als je dit zonder zelf te moeten programmeren wil doen, kan je eventueel naar node-red kijken, die heeft een package node-red-contrib-protobuf die een encode/decode node toevoegd. In theorie moet het daar mee lukken, maar ik heb hier geen ervaring mee.

Acties:
  • 0 Henk 'm!

  • turbotony
  • Registratie: Januari 2012
  • Laatst online: 22:45
Ik denk dat ik het liefst jouw psbridge wil gebruiken. Waar daar jij deze op? Zou dit op een Raspberry pi4b kunnen bijvoorbeeld?

Acties:
  • 0 Henk 'm!

  • turbotony
  • Registratie: Januari 2012
  • Laatst online: 22:45
Het is me inmiddels gelukt om op een pi4 gardlew van jouw psbridge uit te voeren....maar weet nu nog niet hoe nu verder. Ik heb nog geen idee hoe ik die gradle app nu kan starten met de juiste parameters.

Ik vroeg me trouwens af of in het protobuf bericht ook specifieke powerstream info zit zoals serienummer of ip adres of iets dergelijks. Zo niet zou het dan niet mogelijk zijn om vooraf voor verschillende home base load waarden een bericht te maken? Dus bijvoorbeeld een bericht voor een base-load van 50W en een voor 100W etc.
Dan hoeft het protobuf bericht niet elke keer opnieuw gemaakt te worden maar kan afhankelijk van de op dat moment gewenste base-load een eerder gemaakt bericht gebruikt worden.....en die kan dan met een MqttPublish naar de powerstream gestuurd worden.

Zou dat werken denk je?
Pagina: 1