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.
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
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.
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.
Solar Cascade Charging: three device types, one integration, zero grid export.
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.
Delta 2 Max powers office equipment via AC output. When SoC drops below 20%, a push notification fires. Solar surplus charges it back to 80% via max_charge_soc.
AC output off at 23:00, on at 07:00. Standby timeout configured through the number entity. Set it, forget it.
monitor: sensor.delta_2_max_soc < 20 → notify schedule: switch.ac_output off 23:00, on 07:00 charge: number.max_charge_soc = 80
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.
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.
Shore power control chain: the plug enforces the limit, the battery buffers the load, the fridge keeps running.
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
02
Charge power regulation
Every two minutes the regulation subtracts the caravan's own load and a reserve from the budget, then writes what is left to the Delta's charge power.
It reads a ten-minute rolling average rather than the instant number, so an air conditioner compressor cycling on and off looks like one steady draw. None of it has any effect unless the Delta's own Charge Speed switch sits on ADJUST.
writes: number.ac_charge_power, every 2 min
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.
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.
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
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.
1
Install
Open HACS in Home Assistant. Search for EcoFlow Energy, download, and restart.
2
Configure
Add the integration in Settings. Choose Standard, Enhanced or Local and enter the matching credentials, none for Local.
3
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.