This binding provides local, read-only monitoring of Sigenergy energy systems (SigenStor / Sigen Hybrid plants and the Sigen EVAC AC charger) over Modbus TCP, without any cloud dependency. It is an extension to the standard Modbus binding, so you configure one generic Modbus TCP bridge and add ready-made things — no generic poller/data things, gain profiles or transformations needed.
The register map follows the official Sigenergy Modbus Protocol V2.9 (2026-05-13) and has been live-verified on a SigenStor EC 10.0 TP (three-phase, 18 kWh ESS, 4.12 kWp PV) and a Sigen EVAC 11 charger.
Features
Plant thing (sigenergy-plant, unit ID 247):
- EMS work mode, plant running state, on/off-grid status, grid sensor status
- PV / load / grid / battery power, plus per-phase grid power (great for watching EV-charger load balancing against your main fuse)
- Battery SOC, SOH, charge/discharge cut-off limits, cell temperature, rated and available capacities
- Daily PV generation and load consumption + cumulative energy counters (PV, load, battery charged/discharged, grid import/export) — 64-bit safe, ready for persistence-based daily deltas
last-successful-updatetimestamp channel for stale-data detection
Hybrid inverter thing (sigenergy-inverter, own unit ID, usually 1) — new in v0.2:
- Per-string PV monitoring: voltage, current and derived power per string (PV1-PV4) — spot a shaded, snowed-over or failing string at a glance
- Inverter AC/DC power, grid frequency, phase voltages/currents, power factor, internal temperature
- ESS details: SOC/SOH, cell temperature/voltage, daily + cumulative charge/discharge energy
- The inverter identifies itself on startup: model, serial number and firmware become thing properties
Plant alarms — new in v0.2: the merged alarm registers (30027-30030, 30072, 30280-30281) are decoded into an alarm-active switch and a canonical alarm-summary (53 documented alarm bits with PCS/ESS/GATEWAY/DC_CHARGER/PLANT prefixes, or NONE) — ideal for a push-notification rule. Costs no extra Modbus requests. Registers reading 0xFFFF are treated as “not applicable” (a live-observed firmware quirk).
EV charger thing (sigenergy-evac, own unit ID):
- IEC 61851-1 system state, charging power, total energy
- Decoding of all documented alarm bits (aggregate switch + summary + raw masks)
- Charger ratings (power/current/voltage/input breaker)
Safety by design: the binding is strictly monitoring-only — it issues Modbus FC04 read requests only, defines no writable channels, and never touches holding/control registers. Sigenergy’s own EMS/AI stays fully in control of your system. Unit tests enforce the read-only guarantee.
Robustness: register blocks that only exist on newer firmware (protocol V2.8+) fail independently — on older firmware those channels stay undefined and load power falls back to a derived value, without taking the thing offline.
Channel labels and state options are available in English and Swedish.
Requirements
- openHAB 5.1.x or 5.2.x with the Modbus binding installed
- Modbus TCP enabled for your plant in the mySigen app (default plant unit ID 247)
- For the EVAC charger: the charger’s own Modbus slave address must be configured in the mySigen installer app (it has no address until an installer sets one; the end-user app does not show this setting)
Installation
- Download the jar matching your openHAB version and drop it into your
addons/folder: - Configure things (file example):
Bridge modbus:tcp:sigenstor [ host="192.168.1.10", port=502, id=247, enableDiscovery=false, rtuEncoded=false, timeBetweenTransactionsMillis=1000 ] {
Thing sigenergy-plant plant "SigenStor Plant" [ pollInterval=5000, maxTries=3 ]
Thing sigenergy-inverter inverter "Hybrid Inverter" [ unitId=1, pollInterval=10000, maxTries=3 ]
Thing sigenergy-evac evac "EV Charger" [ unitId=2, pollInterval=5000, maxTries=3 ]
}
Full documentation (all channels, sign conventions, polling design, troubleshooting):
Notes
- Power sign conventions follow the protocol: grid positive = import, negative = export; battery positive = charging, negative = discharging.
- Source code: openhab-addons/bundles/org.openhab.binding.modbus.sigenergy at sigenergy-binding · jannegpriv/openhab-addons · GitHub
- Tested on protocol V2.9 firmware; reports from other Sigenergy models/firmware revisions are very welcome!
Roadmap / ideas
- Possibly an upstream PR to openhab-addons once the binding has matured with community feedback
Not planned: write/control support of any kind. This binding is monitoring-only by design — Sigenergy’s EMS/AI remains the sole controller of the system.
Changelog
v0.2 (2026-09-06) — hybrid inverter thing with per-string PV monitoring, plant alarm decoding (53 documented alarm bits), inverter identification as thing properties. 51 unit tests.
v0.1 (2026-09-04) — initial release: plant + EVAC monitoring, EN/SV translations, 38 unit tests. Jars for both 5.1.x and 5.2.x.
