EcoFlow · Home battery
PowerOcean Modbus register map
Default configuration
- Protocol
- Modbus TCP
- Port
- 502
- Unit ID
- 1
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- Low word first
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 40521 | 2 | Grid power Grid-side active power reported by the PowerOcean. | Float32 | W | 1 | R |
| 40523 | 2 | Solar power | Float32 | W | 1 | R |
| 40525 | 2 | Battery power Positive when discharging, negative when charging; evcc inverts the sign for its own convention. | Float32 | W | 1 | R |
| 40527 | 1 | Battery state of charge | UInt16 | % | 1 | R |
| 42161 | 2 | Grid import energy, total | Float32 | kWh | 1 | R |
| 42241 | 2 | Battery discharged energy, total | Float32 | kWh | 1 | R |
| 42257 | 2 | Solar yield energy, total | Float32 | kWh | 1 | R |
Notes
Register map from the evcc template https://raw.githubusercontent.com/evcc-io/evcc/master/templates/definition/meter/ecoflow-powerocean-modbus.yaml (retrieved 2026-10-24), which is the only public definition of this interface found in this pass - EcoFlow does not publish a PowerOcean Modbus register document, so vendor-documentation-grade verification was not possible. Local Modbus TCP must be enabled on the PowerOcean by the installer; port 502, unit ID 1, holding registers, IEEE-754 floats with big-endian byte order and the low word first (evcc decodes all of them as 'float32s', its low-word-first float encoding, so the default here is LowFirst). evcc's template covers exactly these seven channels and nothing more, so this seed is deliberately short: it is the subset needed to meter grid, PV and battery (state of charge, battery power, grid power plus the three lifetime counters). Anything else, including the charge-energy counterpart, stays out rather than being guessed. If EcoFlow publishes the full map later the file should be extended from that document.