-
Notifications
You must be signed in to change notification settings - Fork 1
Vendor Notes
How to switch SunSpec Modbus on per brand, and what to type into the setup form. Two kinds of entries are mixed here:
- Confirmed means someone ran this integration against the device and reported back, usually in an issue. Hardware reports has the details.
- Everything else is taken from vendor documentation and community threads about SunSpec in general. It is a starting point, not a promise.
If your device needed something different, say so in an issue and this page gets corrected.
Most inverters ship with Modbus TCP off. Switch it on in the inverter's own web interface or installer app first. Nothing in this integration can do that for you.
The setup form asks for three things: host, port and unit ID. Port is 502 unless a vendor says otherwise below. Unit IDs to try when the manual is silent: 1, then 126, 71, 2, 247.
Confirmed on Powador and blueplanet.
- Powador TL3 with the Ethernet interface: Modbus TCP in the web interface. Port 502, unit ID 1. Publishes blocks 1, 103 and 160 and nothing else, so no write entities appear on it regardless of the export beta. This is the device the integration was developed against.
- blueplanet TL3 and NX3: port 502, unit ID 1. A blueplanet 9.0 TL3 has block 123, a bp 20.0 NX3 M2 has 123 and 704. Writes need write access enabled in the KACO app. The export limit on these lapses after the revert time, see the section on the revert timer in Battery and export control.
-
NH3 hybrid: whether it publishes the storage block 124 is not
established. If you have one,
detected_modelsfrom your diagnostics download would settle it.
Confirmed connecting on Symo GEN24. The battery, the modes and the web interface entities below are not: see docs/fronius.md (GEN24/Verto/Tauro) and docs/fronius-symo.md (Symo/Primo/Eco/Galvo/Symo Hybrid) for the full reference and their own reports-wanted sections.
- Symo, Primo, Eco, Galvo with Datamanager 2.0, or a Symo Hybrid: web interface -> Settings -> Modbus. Set Data output via Modbus to tcp (it ships as rtu), and SunSpec Model Type to int + SF or float. Port 502. The inverter answers at unit ID 1, a Fronius Smart Meter attached to it at unit ID 240. Add the meter as a second config entry with the same host. Set Night Mode to on or auto on the inverter's own display, or the card goes down with the inverter every night and every connection fails until sunrise.
- GEN24, Tauro, Verto: Communication -> Modbus, switch Slave as Modbus TCP on, same model type choice. Port 502. Inverter at unit ID 1, meter at unit ID 200.
- For writes, the same menu has a control setting (Inverter control via Modbus / Allow control). It has to be on, and if control is restricted to an IP address, that address has to be your Home Assistant host.
- A GEN24 or Symo Hybrid publishes 124 only while a battery is connected, with a native Battery mode and Scheduled discharge on top, see Battery control. Neither generation publishes 704.
-
A new export limit or power factor value needs the enable switch
off and on again, which is documented behaviour on both
generations, not a quirk. The
sunspec2.set_export_limitaction does the off/on cycle for the export limit in one write; the integration option Re-apply the export limit and power factor by switching them off and on when their value changes does it for every write, on by default for Symo/Symo Hybrid and off by default for GEN24. - The lifetime energy counter moves only every few minutes. The integration knows, so the resulting jumps are not filtered out.
Confirmed connecting, port from a report. Nothing about the battery or the storage controls is: see docs/solaredge.md for the full reference and its reports-wanted section.
- SetApp: Site Communication -> Modbus TCP -> Enable, and connect within two minutes or the port closes again. Older inverters with a display: Communication -> LAN Conf -> Modbus TCP.
- Port 1502 on SetApp inverters, 502 on the older display ones, unless the installer changed it. Unit ID 1. In a leader and follower setup the followers answer at 2, 3 and so on on the leader's IP; add one config entry per unit ID.
- A SolarEdge meter shows up as a meter block on the same unit ID.
- SolarEdge keeps its battery and every writable setting in its own registers outside SunSpec, not block 124. Where SolarEdge support has switched them on for the site, the integration adds a battery device and a Storage control mode on the inverter's own device; where they have not, neither appears, and there is no pattern to which inverters have it.
- SolarEdge accepts exactly one Modbus TCP connection. Anything else that reads the inverter has to go through a proxy, see Sharing the inverter with other programs.
Nothing here is confirmed on real hardware: see docs/sma.md for the full reference and its reports-wanted section.
- Sunny Boy, Sunny Tripower with Speedwire or Webconnect (profile -41/-40/Core1): installer login, Device parameters -> External communication -> Modbus -> TCP server set to Yes. Port 502. Enter unit ID 126. SunSpec answers on SMA's own unit ID plus 123, and the factory unit ID is 3; the integration tries 126 on its own when the one you entered fails, and tells you so.
- Tripower X, Smart Energy, Sunny Island X, Core2 (ennexOS): installer login, Configuration -> External communication -> Modbus server. Same unit ID handling.
- Older Speedwire firmware needs the SunSpec Modbus profile enabled explicitly, which SMA calls the Speedwire Modbus profile.
- Unit ID 3, SMA's own register map, is not out of reach any more: the integration reads operating status and, on a Sunny Boy Storage, Sunny Island or Tripower Smart Energy, the battery from it, and can steer that battery through an external power setpoint. See docs/sma.md.
- Sunny Tripower X, Core2: publish the DER family (701, 704, 714 and relatives) rather than block 103. Tick 701 if it is not preselected. They have no operating state point, so switch on Inverter powers down when idle to keep the night-time disconnect out of the Repairs panel.
Confirmed connecting on PIKO CI. The PLENTICORE and PIKO IQ profile is built from Kostal's interface description rather than project hardware: see docs/kostal.md for the full reference and its reports-wanted section.
- PLENTICORE, PIKO IQ: Settings -> Modbus / SunSpec (TCP), activate. Port 1502, unit ID 71.
- Leave the byte order at little-endian (CDAB), the setting the inverter ships with and the one Kostal's own manual says to keep. It applies to Kostal's float registers, and the battery, the house consumption split and every control the integration adds are read from those. A user who set it to big-endian on the advice that "SunSpec needs it" gets nonsense out of all of them, and should set it back.
- The inverter publishes 1, 103, 113, 120, 123, 160, 203 and 802, so it serves the three-phase inverter twice, as integers and as float. The integration ticks 103 and leaves 113 alone; ticking both would build every reading twice.
- Block 203, the meter, needs PLENTICORE G2 from SW 02.12, G3 from 3.04.01 or MP G3 from 3.05.00. Older firmware reports none, and the house consumption sensors are then the only view of the meter.
- Beyond SunSpec the integration reads the house consumption split into roof, battery and grid, and adds the battery as a device named after its type, with the temperature and the energy counters block 802 leaves out. It can set the state of charge bounds and the power limits, and on a G3 from SW 03.05 hold a power limit against the inverter's own fallback watchdog. See Battery control.
- PIKO CI: works, and gets the generic entities only. Kostal documents its commercial line in a register map of its own, so the profile above deliberately does not apply to it. It powers its communication board down at night, which the integration recognises since v0.28.0.
- SG and SH series with the LAN port or the WiNet-S dongle: port 502, unit ID 1. On recent WiNet-S firmware Modbus TCP is off by default and has to be enabled in the dongle's web interface.
- How much of the SunSpec chain a given Sungrow publishes varies by series. No report in this tracker yet.
- ET, EH, BT, BH and DT series with a LAN or WiFi kit: port 502. GoodWe's own register map answers at unit ID 247; whether the SunSpec chain is at the same ID is not confirmed here. Try 1 and 247.
- No report in this tracker yet.
- UNO-DM and TRIO with the integrated WLAN board, and older Aurora inverters behind a VSN300 logger: SunSpec on port 502. The inverter usually answers at unit ID 2, which is the Modbus address shown in the board's web interface.
- No report in this tracker yet.
- Solivia and RPI with Modbus TCP: port 502, unit ID 1. No report in this tracker yet.
These brands speak Modbus TCP, but with their own register maps. This integration cannot read them, and the setup ends in Device does not speak SunSpec.
- Huawei SUN2000: use the huawei_solar integration
- Growatt, Deye / Sunsynk, SolaX, Solis: vendor maps
- Victron GX devices: their own Modbus TCP map
- Tesla Powerwall: no Modbus at all
Many inverters have an RS-485 port with the same SunSpec chain on it.
The integration speaks Modbus RTU through a USB adapter (/dev/ttyUSB0
on Linux, COM3 on Windows). Typical settings are 9600 or 19200 baud,
8 data bits, parity none or even, one stop bit. The unit ID is set on
the inverter's display or in its app. One adapter serves one bus, and
several inverters on one bus are one config entry per unit ID with
the same serial port.
Recipes
- Energy dashboard and statistics
- Zero export and export limiting
- Battery control
- Alerts and notifications
- Dashboard cards
- n8n workflows
- Node-RED workflows
- Sharing the inverter
Reference
- SunSpec models explained
- Entity names and IDs
- Diagnostics file reference
- Vendor notes
- Hardware reports
- FAQ
Under the hood
In the repository