All devices

Sungrow · Protocol gateway

iHomeManager (iHM) Modbus register map

Default configuration

Protocol
RS485
Port
502
Unit ID
247
Addressing
0-based
Byte order
Big endian
Word order
Low word first
Baud rate
9600
Parity
None
Data bits
8
Stop bits
1

This device has an RS-485 interface. Reach it through a Modbus RTU-to-TCP gateway, configured with the factory serial settings above.

Register map

AddressCountNameTypeUnitScaleAccess
43571
Phase A voltage, phase-to-neutral
UInt16V0.1R
43591
Phase B voltage, phase-to-neutral
UInt16V0.1R
43611
Phase C voltage, phase-to-neutral
UInt16V0.1R
81442
Total rated active power
The source states 0.1 kW resolution and scales the reading by 100 to get watts.
UInt32W100R
81542
Total active power (PV)
PV production of the plant behind the iHM; reads together with 8155-8162 as one 9-register block.
Int32W10R
81562
Total active power at the grid meter
Positive = import, negative = export.
Int32W10R
81602
Battery power
Positive = discharge, negative = charge.
Int32W10R
81621
State of charge
UInt16%0.1R
81752
Import energy at the grid meter
UInt32kWh0.1R
81772
Export energy at the grid meter
UInt32kWh0.1R
85582
Phase A active power
Signed: positive = import, negative = export. The source reads 8559-8564 as one 6-register block.
Int32W1R
85602
Phase B active power
Int32W1R
85622
Phase C active power
Int32W1R

Read this device live with Modbus Connect, free for Windows, macOS and Linux

Related guides

Notes

Secondary source: evcc template "sungrow-ihm" (products: Sungrow iHomeManager), checked 2026-11 at https://github.com/evcc-io/evcc/blob/master/templates/definition/meter/sungrow-ihm.yaml - no Sungrow register document for the iHM is public, so the addresses, the 9600 8N1 RS-485 framing, unit ID 247 and port 502 all come from that template and are marked secondary here. The register numbers in the template's comments are the 1-based reference numbers (comment "8155" against address 8154); the addresses stored here are the wire addresses the template actually polls, i.e. zero based. All 32-bit values are read with evcc's `int32s` / `uint32s` encoding, which is low-word-first, so the seed declares word order LowFirst; 16-bit rows are unaffected. The iHM is a plant-level manager: the values describe the meter and battery behind it, and per-inverter data stays in `sungrow-sh-sg` / the inverter's own map. Deliberate omissions: the identity block, the device-state and fault registers and the battery charge/discharge limits are not in the template and therefore not claimed; register 4357 is flagged "undocumented" in the source itself. Poll the 8154 block in one request (9 registers) as the template does, otherwise the iHM answers with gaps.