- Home
- Modbus register maps
- SolarEdge
- SolarEdge inverters (SunSpec logging)
Solar inverter · Modbus register map
SolarEdge SolarEdge inverters (SunSpec logging) Modbus register map
Updated 16 October 2026
SolarEdge inverters expose a read-only SunSpec map: the common block at 40000, inverter model 101/102/103 at 40069, and up to three SolarEdge-connected meter blocks after it. Every measurement is an integer paired with a signed power-of-ten scale-factor register. This map covers identity and the 16-bit inverter AC/DC measurements, operating state and the 16-bit vendor status code, plus meter 1 currents, voltages, frequency and power; 32-bit registers are left out because the note contradicts itself on their word order.
This page lists 77 Modbus registers for the SolarEdge SolarEdge inverters (SunSpec logging) — 0 writable — with the table, 0-based wire address, data type, word order, scale, units and access of each, re-typed from SolarEdge’s own free documentation (linked below) and checked against it.
- Manufacturer
- SolarEdge
- Model
- SolarEdge inverters (SunSpec logging)
- Equipment type
- Solar inverter
- Registers
- 77 (0 writable)
- Transport
- Modbus RTU, Modbus TCP
- Default unit ID
- 1
- Default serial
- 115200 baud, 8N1
- TCP port
- 1502
- Documented addressing
- 0-based (the number printed is the address on the wire)
- Firmware
- Technical note v3.3; the note restricts I_Status_Vendor (40108) to firmware up to 3.19.xx.
- Also known as
- SE5000, Synergy, SolarEdge SunSpec
Integration notes: SolarEdge SolarEdge inverters (SunSpec logging)
Enable Modbus TCP (LAN only) or set RS485-1 to the SunSpec (Non-SE Logger) protocol, then read 40069-40108 with function 03 at unit ID 1. Check that 40069 reads 101, 102 or 103 to confirm the addressing, then decode each value with its scale-factor register.
Minimum registers to map
Addresses are 0-based wire addresses. Enough to monitor and run the unit; map more as the job needs.
| Register | Name | Type | Why | Access |
|---|---|---|---|---|
| HR 40069 | C_SunSpec_DID | UINT16 | Inverter model ID (101/102/103) - proves the addressing is right | Read |
| HR 40083 | I_AC_Power | INT16 | AC output power | Read |
| HR 40084 | I_AC_Power_SF | INT16 | AC power scale factor | Read |
| HR 40085 | I_AC_Frequency | UINT16 | Grid frequency | Read |
| HR 40086 | I_AC_Frequency_SF | INT16 | Frequency scale factor | Read |
| HR 40107 | I_Status | UINT16 | Operating state | Read |
| HR 40206 | Meter 1 M_AC_Power | INT16 | Meter 1 total real power (grid import/export) | Read |
| HR 40210 | Meter 1 M_AC_Power_SF | INT16 | Meter 1 power scale factor | Read |
Enable Modbus control & writes
SolarEdge Go / SetApp: Commissioning > Site Communication > Modbus TCP > Enable (port 1502 by default), or RS485-1 > Protocol > SunSpec (Non-SE Logger) with a unique Device ID 1-247. LCD inverters: Communication > LAN Conf > Modbus TCP (port 502 by default), or the RS485-1 Conf menu. Modbus TCP is off from the factory.
Communication loss & watchdog
No SunSpec communication watchdog is described. The note gives a 2-minute idle time for the Modbus TCP server and advises sending a request within that window to keep the connection open.
Byte order & addressing
- Off-by-one trap: the note prints both columns. Request 40000 (base 0) for the SunSpec marker; a tool that subtracts 1 from 40001-style numbers must start from the base-1 column, never from the base-0 one, or every register is one late and SFs are misread.
- Every value has its own scale-factor register (raw x 10^SF); SFs can change, so read them together with the values.
- 32-bit values (SunS marker, lifetime energy, meter energy counters, Vendor4 status, meter events) are not listed: the note says big-endian in one place and little-endian word order in another. Reading 40000-40001 on site (0x5375 0x6E53 = high word first) shows which applies before you decode any 32-bit value.
- On Synergy three-phase inverters model 160 sits at 40121 and the meter blocks move by +50 or +70 registers.
Network setup
- TCP: LAN cable only (Wi-Fi is not supported for Modbus TCP); the inverter on Ethernet answers at unit ID 1; default port 1502 on SolarEdge Go/SetApp units and 502 on LCD units, both configurable.
- RTU: RS485, 115200 bps 8N1 by default, adjustable 9600-115200 bps; each inverter needs a unique Device ID 1-247 and the logger's ID must differ from all of them.
- A follower inverter cannot talk to a SolarEdge leader and a third-party logger on the same RS485 bus; use the second RS485 port or a Commercial Gateway.
- After enabling TCP the LCD status shows Init for about 10 s before Ready.
Watch out for
- Only one Modbus TCP client and only one Modbus leader (RTU or TCP) are supported at a time - a second logger or home-automation integration will lock out the first.
- Unsupported registers return the SunSpec NOT_IMPLEMENTED value; unsupported meter accumulators may read 0.
- Appendix B quotes read/write response times under 0.5 s, measured on three-phase commercial SetApp inverters (firmware 4.13.5xx and later).
SolarEdge SolarEdge inverters (SunSpec logging) Modbus registers
Address = 0-based wire address (the documented number is shown under it when it differs) · Order: ABCD = high word first, CDAB = low word first · Scale: engineering value = raw × scale.
| Table | Address | Name | Description | Type | Order | Scale | Units | Access | Values / bits |
|---|---|---|---|---|---|---|---|---|---|
| HR | 40002 | C_SunSpec_DID | Common model ID, always 1. | UINT16 | Read | ||||
| HR | 40003 | C_SunSpec_Length | Common block length, 65. | UINT16 | registers | Read | |||
| HR | 40004 | C_Manufacturer | Reads SolarEdge. | STRING[32] | Read | ||||
| HR | 40020 | C_Model | Inverter model, e.g. SE5000. | STRING[32] | Read | ||||
| HR | 40044 | C_Version | CPU firmware version with leading zeroes. | STRING[16] | Read | ||||
| HR | 40052 | C_SerialNumber | Inverter serial number. | STRING[32] | Read | ||||
| HR | 40068 | C_DeviceAddress | Configured Modbus unit ID of this inverter. | UINT16 | Read | ||||
| HR | 40069 | C_SunSpec_DID | Inverter model ID, tells the phase type. | UINT16 | Read | 101 = Single phase; 102 = Split phase; 103 = Three phase | |||
| HR | 40070 | C_SunSpec_Length | Inverter model block length, 50. | UINT16 | registers | Read | |||
| HR | 40071 | I_AC_Current | Total AC output current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40072 | I_AC_CurrentA | Phase A AC current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40073 | I_AC_CurrentB | Phase B AC current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40074 | I_AC_CurrentC | Phase C AC current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40075 | I_AC_Current_SF | Power-of-ten scale factor for the AC current registers. | INT16 | Read | ||||
| HR | 40076 | I_AC_VoltageAB | Line-to-line voltage A-B. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40077 | I_AC_VoltageBC | Line-to-line voltage B-C. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40078 | I_AC_VoltageCA | Line-to-line voltage C-A. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40079 | I_AC_VoltageAN | Phase A to neutral voltage (footnoted in source, see notes). | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40080 | I_AC_VoltageBN | Phase B to neutral voltage (footnoted in source, see notes). | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40081 | I_AC_VoltageCN | Phase C to neutral voltage (footnoted in source, see notes). | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40082 | I_AC_Voltage_SF | Scale factor shared by all six AC voltage registers. | INT16 | Read | ||||
| HR | 40083 | I_AC_Power | AC active output power. | INT16 | × 10^SF (HR 40084) | W | Read | ||
| HR | 40084 | I_AC_Power_SF | Scale factor for AC power. | INT16 | Read | ||||
| HR | 40085 | I_AC_Frequency | Grid frequency. | UINT16 | × 10^SF (HR 40086) | Hz | Read | ||
| HR | 40086 | I_AC_Frequency_SF | Scale factor for frequency. | INT16 | Read | ||||
| HR | 40087 | I_AC_VA | AC apparent power. | INT16 | × 10^SF (HR 40088) | VA | Read | ||
| HR | 40088 | I_AC_VA_SF | Scale factor for apparent power. | INT16 | Read | ||||
| HR | 40089 | I_AC_VAR | AC reactive power. | INT16 | × 10^SF (HR 40090) | var | Read | ||
| HR | 40090 | I_AC_VAR_SF | Scale factor for reactive power. | INT16 | Read | ||||
| HR | 40091 | I_AC_PF | Power factor in percent. | INT16 | × 10^SF (HR 40092) | % | Read | ||
| HR | 40092 | I_AC_PF_SF | Scale factor for power factor. | INT16 | Read | ||||
| HR | 40095 | I_AC_Energy_WH_SF | Scale factor for lifetime energy; typed uint16 in this source. | UINT16 | Read | ||||
| HR | 40096 | I_DC_Current | DC input current. | UINT16 | × 10^SF (HR 40097) | A | Read | ||
| HR | 40097 | I_DC_Current_SF | Scale factor for DC current. | INT16 | Read | ||||
| HR | 40098 | I_DC_Voltage | DC input voltage. | UINT16 | × 10^SF (HR 40099) | V | Read | ||
| HR | 40099 | I_DC_Voltage_SF | Scale factor for DC voltage. | INT16 | Read | ||||
| HR | 40100 | I_DC_Power | DC input power. | INT16 | × 10^SF (HR 40101) | W | Read | ||
| HR | 40101 | I_DC_Power_SF | Scale factor for DC power. | INT16 | Read | ||||
| HR | 40103 | I_Temp_Sink | Heat sink temperature. | INT16 | × 10^SF (HR 40106) | °C | Read | ||
| HR | 40106 | I_Temp_SF | Scale factor for heat sink temperature. | INT16 | Read | ||||
| HR | 40107 | I_Status | Inverter operating state. | UINT16 | Read | 1 = Off; 2 = Sleeping (night mode); 3 = Grid monitoring / wake-up; 4 = Producing (MPPT); 5 = Producing, curtailed; 6 = Shutting down; 7 = Fault; 8 = Maintenance / setup | |||
| HR | 40108 | I_Status_Vendor | SolarEdge state/error code; source says use for firmware up to 3.19.xx. | UINT16 | Read | ||||
| HR | 40121 | Meter 1 C_SunSpec_DID | Common block ID of meter 1, value 1. | UINT16 | Read | ||||
| HR | 40122 | Meter 1 C_SunSpec_Length | Meter common block length, 65. | UINT16 | registers | Read | |||
| HR | 40123 | Meter 1 C_Manufacturer | Meter manufacturer. | STRING[32] | Read | ||||
| HR | 40139 | Meter 1 C_Model | Meter model. | STRING[32] | Read | ||||
| HR | 40155 | Meter 1 C_Option | Meter role, e.g. Export+Import, Production, Consumption. | STRING[16] | Read | ||||
| HR | 40163 | Meter 1 C_Version | Meter version. | STRING[16] | Read | ||||
| HR | 40171 | Meter 1 C_SerialNumber | Meter serial number. | STRING[32] | Read | ||||
| HR | 40187 | Meter 1 C_DeviceAddress | Modbus ID of the inverter hosting the meter. | UINT16 | Read | ||||
| HR | 40188 | Meter 1 C_SunSpec_DID | Meter model ID, tells the meter wiring type. | UINT16 | Read | 201 = Single phase (AN or AB); 202 = Split single phase (ABN); 203 = Wye three phase (ABCN); 204 = Delta three phase (ABC) | |||
| HR | 40189 | Meter 1 C_SunSpec_Length | Meter model block length. | UINT16 | registers | Read | |||
| HR | 40190 | Meter 1 M_AC_Current | Sum of active-phase currents. | INT16 | × 10^SF (HR 40194) | A | Read | ||
| HR | 40191 | Meter 1 M_AC_Current_A | Phase A current. | INT16 | × 10^SF (HR 40194) | A | Read | ||
| HR | 40192 | Meter 1 M_AC_Current_B | Phase B current. | INT16 | × 10^SF (HR 40194) | A | Read | ||
| HR | 40193 | Meter 1 M_AC_Current_C | Phase C current. | INT16 | × 10^SF (HR 40194) | A | Read | ||
| HR | 40194 | Meter 1 M_AC_Current_SF | Scale factor for meter currents. | INT16 | Read | ||||
| HR | 40195 | Meter 1 M_AC_Voltage_LN | Average line-to-neutral voltage of active phases. | INT16 | × 10^SF (HR 40203) | V | Read | ||
| HR | 40196 | Meter 1 M_AC_Voltage_AN | Phase A to neutral voltage. | INT16 | × 10^SF (HR 40203) | V | Read | ||
| HR | 40197 | Meter 1 M_AC_Voltage_BN | Phase B to neutral voltage. | INT16 | × 10^SF (HR 40203) | V | Read | ||
| HR | 40198 | Meter 1 M_AC_Voltage_CN | Phase C to neutral voltage. | INT16 | × 10^SF (HR 40203) | V | Read | ||
| HR | 40203 | Meter 1 M_AC_Voltage_SF | Scale factor for meter voltages. | INT16 | Read | ||||
| HR | 40204 | Meter 1 M_AC_Freq | Frequency measured by the meter. | INT16 | × 10^SF (HR 40205) | Hz | Read | ||
| HR | 40205 | Meter 1 M_AC_Freq_SF | Scale factor for meter frequency. | INT16 | Read | ||||
| HR | 40206 | Meter 1 M_AC_Power | Total real power, sum of active phases; sign convention per IEEE 1459. | INT16 | × 10^SF (HR 40210) | W | Read | ||
| HR | 40207 | Meter 1 M_AC_Power_A | Phase A real power. | INT16 | × 10^SF (HR 40210) | W | Read | ||
| HR | 40208 | Meter 1 M_AC_Power_B | Phase B real power. | INT16 | × 10^SF (HR 40210) | W | Read | ||
| HR | 40209 | Meter 1 M_AC_Power_C | Phase C real power. | INT16 | × 10^SF (HR 40210) | W | Read | ||
| HR | 40210 | Meter 1 M_AC_Power_SF | Scale factor for meter real power. | INT16 | Read | ||||
| HR | 40211 | Meter 1 M_AC_VA | Total apparent power. | INT16 | × 10^SF (HR 40215) | VA | Read | ||
| HR | 40215 | Meter 1 M_AC_VA_SF | Scale factor for meter apparent power. | INT16 | Read | ||||
| HR | 40216 | Meter 1 M_AC_VAR | Total reactive power. | INT16 | × 10^SF (HR 40220) | var | Read | ||
| HR | 40220 | Meter 1 M_AC_VAR_SF | Scale factor for meter reactive power. | INT16 | Read | ||||
| HR | 40221 | Meter 1 M_AC_PF | Average power factor of active phases. | INT16 | × 10^SF (HR 40225) | % | Read | ||
| HR | 40225 | Meter 1 M_AC_PF_SF | Scale factor for meter power factor. | INT16 | Read | ||||
| HR | 40242 | Meter 1 M_Energy_W_SF | Scale factor for real energy counters. | INT16 | Read | ||||
| HR | 40259 | Meter 1 M_Energy_VA_SF | Scale factor for apparent energy counters. | INT16 | Read |
Notes on this map
- All registers are read with function 03; the note describes this SunSpec map as read-only monitoring data.
- Value = raw x 10^SF, where SF is the signed int16 named in scale_factor_ref. Read a value and its SF in the same request so they belong to the same sample.
- Word order: the meter section of the note says registers are big-endian with the most significant part first, but Appendix A states, for communicating with SolarEdge devices in general, that 32-bit values use little-endian word order (with a big-endian copy at +0x800). The appendix does not limit that statement to the proprietary registers, so every 32-bit register is left out: C_SunSpec_ID 40000, I_AC_Energy_WH 40093, I_Status_Vendor4 40119, meter 1 real-energy counters 40226-40240, apparent-energy totals 40243/40251 and M_Events 40293. Their scale-factor registers (40095, 40242, 40259) are kept.
- I_AC_Energy_WH_SF (40095) is typed uint16 in this note although SunSpec scale factors are signed int16; the published type is kept. Its energy register is not listed (see word order).
- The note attaches a footnote to I_AC_VoltageAN/BN/CN reading 'Supported only in split-phase configurations'; the same footnote marker also appears on the status table. These registers may be unimplemented on some grid setups.
- On the inverter table the footnote 'use this field for versions up to 3.19.XX' is attached to I_Status_Vendor (40108) and also to I_AC_PF and I_AC_PF_SF (40091-40092).
- Left out: Multiple MPPT extension model 160 (from 40121, Synergy three-phase inverters only, firmware 4.13+). On Synergy units it occupies the addresses where meter 1 sits on other inverters, and the meter blocks move by +50 (2-unit) or +70 (3-unit).
- Left out: meter line-to-line voltages 40199-40202 (the note says SolarEdge meters do not report L-L voltage over SunSpec), per-phase meter VA/var/PF, per-phase apparent energies and the reactive-energy quadrant counters 40260-40292.
- Meters 2 and 3 repeat the meter 1 layout at base 40295 and 40469 (base 0, default). Only enabled meters are readable and they are packed in order, so if meters 1 and 3 are enabled, meter 3 appears in the meter 2 slot.
- The meter overview text mentions DID 4 or 5, while the register table lists 201-204; the table values are used here.
- Active/reactive power control (curtailment) is documented in SolarEdge's separate Power Control document and is not part of this map.
Check it against the live device. A register map tells you what the controller can expose; the unit in front of you may differ by firmware or options. Read a few registers and compare them with the unit’s own display; for a 32-bit value the float and byte-order decoder shows all four word orders at once, so a wrong word order or scale is obvious. New to this? Read what a register map is and why addresses are off by one.
Questions about the SolarEdge SolarEdge inverters (SunSpec logging)
What Modbus registers does the SolarEdge SolarEdge inverters (SunSpec logging) have?
This map lists 77 registers: 77 holding registers. 0 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.
Are the SolarEdge SolarEdge inverters (SunSpec logging) Modbus addresses 0-based or 1-based?
The manufacturer's document numbers registers 0-based (the number printed is the address on the wire). Every address on this page is the 0-based wire address you put in the request; the documented number is shown under it where it differs. The source prints two columns for every register: 'base 0' (Modbus protocol address) and 'base 1' (PLC address). 'documented' holds the base-0 value, which goes on the wire unchanged: the SunSpec marker is requested at 40000, and the same register is listed as 40001 in the base-1 column.
What are the minimum Modbus registers to integrate the SolarEdge SolarEdge inverters (SunSpec logging)?
Start with HR 40069 C_SunSpec_DID (Inverter model ID (101/102/103) - proves the addressing is right); HR 40083 I_AC_Power (AC output power); HR 40084 I_AC_Power_SF (AC power scale factor); HR 40085 I_AC_Frequency (Grid frequency); HR 40086 I_AC_Frequency_SF (Frequency scale factor); HR 40107 I_Status (Operating state); HR 40206 Meter 1 M_AC_Power (Meter 1 total real power (grid import/export)); HR 40210 Meter 1 M_AC_Power_SF (Meter 1 power scale factor).
How do I enable Modbus control of the SolarEdge SolarEdge inverters (SunSpec logging)?
SolarEdge Go / SetApp: Commissioning > Site Communication > Modbus TCP > Enable (port 1502 by default), or RS485-1 > Protocol > SunSpec (Non-SE Logger) with a unique Device ID 1-247. LCD inverters: Communication > LAN Conf > Modbus TCP (port 502 by default), or the RS485-1 Conf menu. Modbus TCP is off from the factory.
What happens when the SolarEdge SolarEdge inverters (SunSpec logging) loses Modbus communication?
No SunSpec communication watchdog is described. The note gives a 2-minute idle time for the Modbus TCP server and advises sending a request within that window to keep the connection open.
Where is the official SolarEdge SolarEdge inverters (SunSpec logging) Modbus documentation?
The source is Technical Note - SolarEdge Inverters - SunSpec Logging (Version 3.3), revision 2026-10, published free by SolarEdge at https://knowledge-center.solaredge.com/sites/kc/files/sunspec-implementation-technical-note.pdf.
Source: Technical Note - SolarEdge Inverters - SunSpec Logging · Version 3.3 · rev. 2026-10. Register numbers, types, scaling and units are reproduced as published; descriptions are our own.