Open Source · HACS · v1.25.0

Every watt, every device.
Native in Home Assistant.

Up to 1280 entities across fifteen device families. Real-time MQTT streaming, a local Modbus/TCP option for the three-phase PowerOcean, native Energy Dashboard integration, and control wherever the device allows it.

1280 Entities at full configuration
~2-4s Enhanced Mode, most devices
4078 Unit tests

Cloud by default. Local where the inverter allows it.

Through the official Developer API, the integration polls about every 30 seconds. Too coarse for meaningful automations or real-time energy monitoring. On my PowerOcean, the cloud copy behind that poll refreshed reliably only while the EcoFlow app or portal was open. One other owner has reported Standard Mode readings that moved only twice in one day.

EcoFlow Energy offers three connection types. Standard Mode uses the official IoT API with HTTP polling and real-time MQTT push. Enhanced Mode receives what the device pushes over the account connection, every 2 to 4 seconds for most devices, with no Developer API keys required.

My own PowerOcean now runs without the cloud. If EcoFlow support has enabled Modbus/TCP on a three-phase PowerOcean, EcoFlow Energy reads it directly on your network about every 2 seconds, with no account. It shows the main readings, not everything the account connection does.

If the connection drops, a 4-tier reconnect strategy kicks in automatically. In Enhanced Mode, entities degrade gracefully through defined stages while retaining last-known-good values. Data collection resumes without manual intervention. Set it up once.

Everything your energy dashboard needs.

Auto-discovery, three connection types, and sensors that map directly to the HA Energy Dashboard. No YAML required.

Cloud or Local

Enhanced Mode streams device pushes every 2 to 4 seconds for most devices. Delta and Smart Plug also get MQTT push in Standard Mode. If EcoFlow support has enabled Modbus, a three-phase PowerOcean can be read locally every 2 seconds, with no cloud.

Energy Dashboard Ready

All energy sensors use total_increasing state class. Solar, grid, battery, and home consumption map directly into the HA Energy Dashboard.

Auto-discovery

Enter your EcoFlow account or API keys once. All devices bound to your account are discovered automatically and managed within a single integration instance. A Local entry holds exactly one PowerOcean.

Bidirectional Control

Toggle outputs, set charge limits, and configure SoC thresholds. Switches, selects, numbers, and buttons across nine of fifteen device families.

Recovers on Its Own

4-tier MQTT reconnect strategy with graduated availability degradation. If the real-time stream drops, entities retain last-known-good values while the connection recovers through defined stages.

Built-in Diagnostics

Download HA diagnostics with full device state. Credentials are automatically redacted. Debug with confidence.

Fifteen device families. One integration.

Home batteries, hybrid inverters, plug-in and whole-home batteries, load panels, portable power stations, an air conditioner, a wallbox, a plug, a meter, a microinverter, and a solar tracker. 1280 entities total, including per-pack, per-module and per-circuit entities up to each device's maximum. Multi-device configurations supported natively.

PowerOcean

Home Battery System

  • 249 sensors: 129 core + 120 per-pack for up to 5 battery packs
  • 21 binary sensors, 2 selects: work mode, heating-rod mode
  • 20 number controls: backup reserve, solar surplus threshold, 8 charge and 8 feed-in schedules, heating-rod power and temperature
  • 16 switches: enable or disable each charge and feed-in schedule
  • Heating-rod temperature and mode still await a check on hardware
  • 3-phase grid, MPPT per-string, battery cell detail
  • PowerPulse wallbox readings in Enhanced Mode
  • Covers PowerOcean Plus and the single-phase and three-phase variants
  • Local Modbus/TCP on the three-phase variant: 28 sensors, 4 binary sensors, Modbus Control, Backup Reserve, Indicator Brightness
  • Standard (~30s), Enhanced (~3s), Local (~2s)

Ocean 2

Hybrid Inverter

  • 51 system sensors, plus 12 per battery module
  • Backup reserve number and Storm Guard switch on the RE11, every other model read-only
  • 6 Energy Dashboard sensors
  • Covers RE11, RE17, RE41, RE42, and RE43, single-phase units included
  • Its own parser and entity set, separate from the PowerOcean
  • Enhanced Mode only (~3s)

Stream Series

Plug-in / Balcony Battery

  • 60 sensors, 2 binary sensors for per-outlet state
  • 4 number controls: backup reserve, plus charge limit, discharge limit, and LED brightness on AC Pro
  • 2 switches: AC outlets on Stream AC Pro
  • Per-string solar telemetry across up to 4 strings, with voltage and current on PV3 and PV4
  • Signed AC grid connection power, matches the EcoFlow app, plus battery cycle count
  • Stream Ultra, AC Pro, Max, AC, Ultra X, and Stream Micro, detected automatically

Stream AC 5000

Whole-home AC-coupled Battery

  • 64 sensors, 2 binary sensors
  • 7 number controls: scheduled charge and discharge power, charge and discharge limits, backup reserve, max grid-tied output, max grid input
  • The scheduled charge setpoint has not held up in measurement
  • 1 select: work mode
  • 2 switches: backup reserve, backup socket
  • 5 PV readings: total and strings 1 to 4
  • Also covers the STREAM 5000, same readings and controls
  • Per-unit battery power when up to three units share one account
  • Enhanced Mode only (~2s)

Delta 2 Max

Portable Power Station

  • 94 sensors, 4 binary sensors
  • 7 switches: AC, DC, 12V, beeper, X-Boost, AC auto restart, backup reserve
  • 8 number controls: charge speed, SoC limits, standby, screen, 12V timeout, backup level
  • Expansion battery pack support (up to 2)
  • Standard Mode: ~30s polling plus real-time MQTT push

Delta 3 Series

Portable Power Station

  • 47 sensors, covering AC, solar, 12V, USB and Anderson ports
  • 7 switches: both AC outputs, 12V, X-Boost, beeper, bypass lock, backup reserve
  • 4 number controls: charge limit, discharge limit, backup reserve level, AC charge power
  • Delta 3 Max Plus adds port priority for three ports: 3 switches, 3 cutoff levels, 1 binary sensor
  • 5 selects: screen timeout and idle shutdown for the unit, both AC outlets and the 12V group
  • 4 Energy Dashboard sensors, integrated from live power telemetry
  • Entity IDs identical in both modes, so history survives a mode switch
  • Covers Delta 3, Delta 3 Plus, and Delta 3 Max Plus
  • RIVER 3 and RIVER 3 Plus: 31 sensors and 1 binary sensor drawn from this set, read-only, Enhanced Mode only

Smart Plug

Smart Energy Plug

  • 11 sensors, 1 binary sensor
  • 1 switch: relay on/off
  • 2 number entities: LED brightness, max power limit
  • Real-time power, current, voltage, frequency
  • Standard + Enhanced Mode (~3s)

WAVE 3

Portable Air Conditioner

  • 18 sensors, 5 binary sensors, 1 climate entity
  • 4 switches: power, buzzer, automatic drainage, pet care
  • 5 number controls: target temperature, fan speed, target humidity, screen brightness, pet care warning temperature
  • 5 selects: operating mode, submode, display temperature, mood light, screen timeout
  • Thermostat card: cool, heat, fan, dry, and a two-temperature band in constant temperature mode
  • Lifetime energy counter integrated from 2-second input power, Energy Dashboard ready
  • Enhanced Mode only, the unit is not available through the Developer API

PowerPulse 2

EV Wallbox

  • 18 sensors, 1 binary sensor for the cable lock
  • Charging power, voltage and current per phase, phase mode, maximum and session current
  • Session start, duration, energy and lifetime energy counter
  • Start and Stop buttons, with no PowerOcean in the entry or exactly one
  • Without a PowerOcean: charging current, set directly on the wallbox
  • With exactly one PowerOcean: maximum current, solar minimum and custom charging current, screen and LED brightness, charge mode, phase, 5 switches
  • The C371 is read-only
  • Enhanced Mode only

Load Panels

Sensors, no controls

OCEAN Smart Electrical Panel 40
US split-phase panel. 19 sensors, plus 3 sensors and 1 binary sensor per circuit for up to 40 circuits. Grid legs, solar, battery, home power. Enhanced Mode.
Smart Home Panel 2
US split-phase panel. 9 sensors, plus 2 per circuit for up to 12 circuits and 1 per storage channel. Grid legs, home power, battery storage. Enhanced Mode.

Solar Generation

Sensors, no controls

PowerStream
Microinverter, 25 sensors. Both PV strings, inverter output, grid balance, attached battery. Standard Mode.
Solar Tracker
6 sensors. Tilt, target and optimal angle, light level, mode, battery. Enhanced Mode.

Meter and Portable

Sensors, no controls

Smart Meter
EF-EM-P3-120, 18 sensors, 3 binary sensors. Grid power, per-phase power, voltage and current, six energy counters. Enhanced Mode.
DELTA Pro Ultra
21 sensors, plus 2 per battery pack for up to 5 packs. Battery level, input and output power, temperatures. Enhanced Mode.

You monitored. Now you control.

Three automations running in production. Each uses entity data from this integration, standard Home Assistant triggers, and zero custom code.

01

Solar Cascade Charging

PowerOcean hits 98% SoC. Smart Plug turns on. Delta 2 Max charges from solar surplus instead of exporting to the grid. Plug turns off when Delta reaches 99% or PowerOcean drops below 50%.

Three device types coordinated through one integration. No solar energy wasted on feed-in.

trigger: sensor.powerocean_battery_soc ≥ 98
action: switch.plug → on
condition: sensor.delta_2_max_soc < 99
03

Solar Surplus Awareness

PowerOcean grid export exceeds 1000W for 5 minutes. Push notification with current export value. Shift the dishwasher, laundry, or EV charger into the solar window.

Not automation for its own sake. Actionable awareness that turns monitoring into lower grid bills.

trigger: sensor.grid_export_power_w > 1000 for 5min
action: notify.mobile_app
data: "Solar surplus: {{ export_power }}W"

The pillar sees a limit. The caravan sees a battery.

A campsite pillar is fused anywhere from 2 to 16 amps, and a caravan running an air conditioner alongside a kettle can ask for more than that on one circuit. Three control layers sit between the two on my caravan, acting in order, so the pillar sees a steady draw instead of a spike.

01

The Shelly as a remote-reset cut-off

Current and power limits follow the hookup size in use. A charge power setpoint is a target for the battery, not a ceiling on the wire. At a 500 W setpoint with the air conditioner running, the grid pull measured 1415 W.

The plug is set to trip before the pillar's breaker sees that number. The Delta is already in bypass mode, so fridge and lights keep running from the battery while the switch resets from Home Assistant instead of a walk to the reception.

limit: current + power, whichever trips first
03

SoC staged load shedding

Below 30 percent Home Assistant sheds the second AC outlet and sends a notification. Below 20 percent the Delta marks that same outlet non-essential and sheds it on its own, no network required.

Below 10 percent the discharge limit takes over on the device itself. The fridge, the cooler, and the air conditioner on the first outlet are never shed by the automation, only flagged.

stages: 30% software, 20% device, 10% discharge limit

This is the same integration behind the automations above, on my own caravan, against a harder constraint: a fuse that trips once and stays tripped until someone finds the reset. The full package, the YAML, and the two approaches that did not work are in the repository.

Caravan guide on GitHub

Two cloud modes. One local connection.

Standard Mode uses the official EcoFlow IoT API with HTTP polling and MQTT push. Enhanced Mode receives device pushes over the account connection, every 2 to 4 seconds for most devices, with graduated availability degradation instead of HTTP fallback. Local reads a three-phase PowerOcean over Modbus/TCP on your own network.

Aspect Standard Enhanced Local
Connection EcoFlow cloud, HTTPS polling + MQTT EcoFlow cloud, WSS MQTT Your network, Modbus/TCP, no cloud
Credentials Access Key + Secret Key EcoFlow email + password None. EcoFlow support must enable Modbus on the inverter first
Update rate ~30s polling, plus MQTT push for Delta and Smart Plug ~2-4s for most devices ~2s polling
Devices Models the Developer API exposes, the only mode for PowerStream All except PowerStream, required for the Enhanced-only models Three-phase PowerOcean only
PowerOcean controls Read-only sensors Backup Reserve, Solar Surplus Threshold, Work Mode Backup Reserve, Indicator Brightness, and a Modbus Control switch that locks the EcoFlow app while on
Stability Official EcoFlow API Community-driven, may break with EcoFlow updates Measured on one unit, use at your own risk
Best for Long-term operation on the official API Real-time monitoring, fast automations, PowerOcean control Owners who want no dependence on EcoFlow's servers

Local is deliberately narrow. Modbus Control is always off after a restart, and the app gets control back about a minute after it is switched off. The integration writes only the keep-alive signal, Backup Reserve and Indicator Brightness. After each change it reads Backup Reserve and Indicator Brightness back from the inverter. Per-pack charge levels, grid phase values and other writes are not included.

A Local entry holds exactly one PowerOcean, and Reconfigure moves a single-PowerOcean entry between cloud and Local. Compared with the account connection over about 19 hours on one unit, the charge level was within 1 percent.

Local is an independent implementation, not provided or reviewed by EcoFlow. Thanks to @jensfr1, who showed how EcoFlow enables Modbus on the inverter.

Built for depth, not just compatibility.

What the integration delivers across data, control, and failure handling.

Feature What you get
Data source MQTT push (Enhanced), local Modbus/TCP for the three-phase PowerOcean, graduated availability with last-known-good data
Cloud dependency Cloud by default, with a local connection for the three-phase PowerOcean that needs no account
Connection resilience 4-tier reconnect, graduated availability degradation
Control Switches, charge speed, SoC limits, thermostat card, wallbox Start/Stop, optimistic lock, read-back on wallbox, heating rod, Backup Reserve and Indicator Brightness
Entity depth Up to 308 (PowerOcean, plus 15 Local-only), up to 245 (Ocean 2), up to 179 (Panel 40), 113 (Delta 2 Max), 76 (Stream AC 5000), up to 70 (Delta 3), 68 (Stream), 38 (WAVE 3), up to 36 (Smart Home Panel 2), 34 (PowerPulse 2), up to 31 (DELTA Pro Ultra), 25 (PowerStream), 21 (Smart Meter), 15 (Smart Plug), 6 (Solar Tracker)
Mobile tolerance Offline = expected state, not an error

Depth compounds. An integration that handles one device cleanly is useful. One that handles fifteen device families, connection failures, and a van-mounted battery going offline for three days takes deliberate architecture.

Three steps. Done.

Install via HACS, choose a connection type, and your devices appear automatically.

Install

Open HACS in Home Assistant. Search for EcoFlow Energy, download, and restart.

Configure

Add the integration in Settings. Choose Standard, Enhanced or Local and enter the matching credentials, none for Local.

Monitor

Devices are auto-discovered. Entities appear in your dashboards, Energy Dashboard sensors are ready to map.

Proven tools.

A focused stack for reliability. Reverse-engineered protocols, typed Python, and a test suite that covers every parser.

Python Runtime
Home Assistant Platform
MQTT / WSS Transport
Protobuf Protocol
HMAC-SHA256 Auth
HACS Distribution
Claude Code Dev Tool

One architect. One agent team.

EcoFlow Energy was built by one person with a clear division of responsibility: architectural decisions, domain knowledge, and protocol understanding stay with the human. Test generation, code review, schema analysis, and scaffolding are delegated to a coordinated set of AI agents.

This is not a solo project that used AI as a productivity tool. It is a different development model. One architect setting direction, agents executing with precision. The 4078-test suite covering every parser edge case was not written by hand. It was specified, reviewed, and shipped through that workflow.

The result is public and auditable. If you want to see what this model produces in practice, start with the repository.

Open source thrives on community.

Back this project

EcoFlow Energy exists because I needed more than a working connection. The reverse engineering, the Protobuf parsers, the reconnect logic, the multi-device architecture. None of that was required to ship something functional. It was required to ship something reliable.

This is how I approach every technical problem. The code is public. Draw your own conclusions.

Buy me a coffee