npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

iobroker.ecoflow-powerocean

v0.3.1

Published

Reads live data from the EcoFlow Ocean 2 and other PowerOcean systems via the EcoFlow app MQTT broker

Readme

ioBroker.ecoflow-powerocean

English · Deutsch

Liest Livedaten vom EcoFlow Ocean 2 (Seriennummern beginnend mit RE11) und anderen PowerOcean-Anlagen und schreibt PV, Batterie, Netz und Phasenwerte in den ioBroker-Objektbaum.

Im ioBroker erscheint der Adapter als EcoFlow Ocean 2.

Gerätehersteller: EcoFlow Ocean 2

Warum es diesen Adapter gibt

Die offizielle Developer-API von EcoFlow liefert für PowerOcean keine Livedaten:

  • /iot-open/sign/device/quota antwortet mit Fehler 1006 („current device is not allowed to get device info")
  • Batteriemodule antworten mit Fehler 8512 („no permission")
  • Das offizielle MQTT-Topic lässt sich abonnieren, sendet aber nie etwas
  • Die History-Endpunkte liefern Feldnamen mit leeren Werten

Der einzige funktionierende Weg ist der MQTT-Broker, den die EcoFlow-App selbst nutzt. Dorthin schickt das Gerät etwa alle 2 Sekunden Protobuf-Telemetrie.

Das Ocean 2 (Seriennummern beginnend mit RE11) verwendet dabei die bislang undokumentierte Nachrichtenklasse cmdFunc 254 (cmdId 39 = Telemetrie, cmdId 46 = Batteriemodul). Der Decoder in src/lib/protobuf.ts wurde aus mitgeschnittenem Verkehr rekonstruiert und gegen das EcoFlow-Webportal verifiziert (Abweichung ~1 %). Ältere Anlagen mit cmdFunc 96 werden ebenfalls unterstützt.

Hinweis: Das nutzt die inoffizielle App-API von EcoFlow. Sie kann sich jederzeit ändern.

Installation

Der Adapter ist noch nicht im offiziellen ioBroker-Repository. Installation daher über GitHub — im ioBroker-Admin unter Adapter → Katzensymbol (benutzerdefinierte Installation) → Aus GitHub, dort eintragen:

jensfr1/ioBroker.ecoflow-powerocean

Oder auf der Kommandozeile des ioBroker-Hosts:

iobroker url https://github.com/jensfr1/ioBroker.ecoflow-powerocean/tarball/main

Danach eine Instanz anlegen und die Einstellungen unten ausfüllen.

Verwandte Projekte

foxthefox/ioBroker.ecoflow-mqtt unterstützt viele EcoFlow-Geräte inklusive älterer PowerOcean-Generationen und deutlich mehr Datenpunkte. Probier den zuerst — wenn er für dein Gerät funktioniert, nimm ihn. Dieser Adapter zielt auf Anlagen, deren Telemetrie jener Adapter noch nicht dekodiert.

jensfr1/ha-ecoflow-ocean2 ist derselbe Ansatz für Home Assistant, mit derselben Decoder-Logik.

Konfiguration

| Einstellung | Beschreibung | |---|---| | E-Mail | Dein EcoFlow-Konto (wie in der App) | | Passwort | Wird von ioBroker verschlüsselt abgelegt | | Seriennummer | Die des Wechselrichters, z. B. RE11XXXXXXXXXXXX | | Aktualisierungsintervall | Wie oft States geschrieben werden (1–60 s, Standard 10) |

Eine Instanz bedient genau ein Gerät. Für mehrere Anlagen mehrere Instanzen anlegen.

Objekte

ecoflow-powerocean.0
├── info.connection            mit der EcoFlow-Cloud verbunden
├── info.lastUpdate            Zeitstempel der letzten Nachricht
├── device.sn                  Seriennummer
├── pv.power                   W    PV-Erzeugung
├── pv.strings.<n>.power       W    je MPPT-String
├── battery.soc                %    Ladestand
├── battery.power              W    positiv = laden, negativ = entladen
├── battery.charging           bool
├── battery.remainingEnergy    Wh
├── battery.packs.<n>.*             je Batteriemodul (soc, temperature, voltage, …)
├── grid.power                 W    positiv = Bezug, negativ = Einspeisung
├── house.power                W    berechnet, siehe unten
├── inverter.power             W    AC-Ausgang des Wechselrichters
├── energy.gridImported        Wh   Zählerstände, neustartfest
├── energy.gridExported        Wh
├── energy.pvProduced          Wh
├── energy.batteryCharged      Wh
├── energy.batteryDischarged   Wh
├── energy.houseConsumed       Wh
└── phases.<a|b|c>.*           V / A / W / var / VA

house.power ist berechnet, nicht gemessen. Das Gerät meldet die Hauslast nicht direkt. Am Hausknoten hängen aber genau zwei Quellen — der Wechselrichter (der PV und Batterie bereits verrechnet hat) und das Netz:

Haus = Wechselrichter-Ausgang + Netzbezug

Das ist genauer als der Umweg über PV − Batterie + Netz, weil die Wandlungsverluste schon im Wechselrichterwert stecken. Fehlt einer der beiden Werte, greift die alte Bilanz als Rückfallebene.

Entwicklung

npm install
npm run build      # TypeScript -> build/
npm test           # Decoder- und Merge-Logik (ohne Hardware)

Live-Test gegen eine echte Anlage (gibt 40 s lang Snapshots aus):

npx tsx test/live-check.ts <email> <passwort> <seriennummer>

Changelog

0.3.1

  • Der Hausverbrauch kommt jetzt vom Gerät statt aus einer Rechnung. Das Gerät meldet ihn direkt — im selben Moment wie Solar, Batterie und Netz und mit ihnen bilanziert. Die bisherige Rechnung (Wechselrichter plus Netz) lag systematisch zu niedrig, weil diese beiden Felder unabhängig voneinander aktualisiert werden und damit aus verschiedenen Momenten stammen: 2018 W gerechnet gegen 2100 W gemeldet an einer Anlage, 306 W gegen 490 W an einer anderen. Damit stimmt auch der Zähler energy.houseConsumed und jede daraus abgeleitete Autarkiequote

0.3.0

  • Energiezähler unter energy.* in Wh: Netzbezug und -einspeisung, Solarerzeugung, Batterie geladen und entladen, Hausverbrauch. Sie überstehen einen Adapterneustart und rechnen Verbindungslücken bewusst nicht hoch — es wird keine Energie erfunden, die nie geflossen ist

0.2.0

  • Batteriemodule melden jetzt auch Leistung, Alterungszustand und Ladezyklen. Das Gerät sendet diese Werte längst — sie wurden nur für die ältere Generation ausgelesen

0.1.3

  • Die Netzleistung nutzt jetzt dieselbe Totzone von 30 W wie die EcoFlow-App, damit beide Anzeigen im Leerlauf übereinstimmen

0.1.2

  • Die Netzleistung kam aus dem falschen Feld: 65.7 ist eine Einstellung, keine Messung. Bei Nulleinspeisung steht dort 0, bei einer Anlage mit 10-kW-Begrenzung 10000 — beide Male konstant. Der echte Wert steht in 4.13
  • Der Hausverbrauch ergibt sich jetzt aus Wechselrichter-Ausgang plus Netzbezug statt aus PV − Batterie + Netz. Das ist genauer, weil die Wandlungsverluste schon im Wechselrichterwert stecken

0.1.1

  • Adapter beendet sich zuverlässig: Der Weckruf-Timer läuft jetzt über den Adapter, damit ioBroker ihn beim Entladen abräumen kann
  • Installation von GitHub funktioniert: Das kompilierte build/ liegt im Repository (bei einer GitHub-Installation läuft kein Build-Schritt)
  • Admin-Dialog in elf Sprachen übersetzt
  • Integrations- und Pakettests ergänzt, CI läuft auf Node 22/24 unter Linux, Windows und macOS

0.1.0

  • Erste Veröffentlichung: Livedaten über das EcoFlow-App-MQTT, Unterstützung für cmdFunc 254 (Ocean 2) und cmdFunc 96 (ältere Generation)

Unterstützung

Ich baue das in meiner Freizeit und gebe es her. Wenn es dir etwas spart und du es erübrigen kannst, freue ich mich über einen kleinen Beitrag — erwartet wird nichts, und nichts ist davon abhängig.

Ein Stern auf GitHub kostet nichts und hilft genauso.

Lizenz

MIT License

Copyright (c) 2026 Jens Franke

Vollständiger Text in LICENSE.