verified connector library

Deye hybrid inverter (Modbus V118)

Register map(s) for this device, each at the trust rung it earned. Addresses are 0-based as on the wire. Word order and scaling are confirmed at the hardware-verified rung and at no rung below it.

interop-verified

Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.

pointaddress (0-based)typescaleunit
run_state59U161
day_active_power_wh60I160.10.1kWh
day_reactive_power_wh61I160.10.1kVarh
today_gen_power_wh62U160.10.1kWh
total_active_power_wh63U32LE0.10.1kWh
day_batt_charge_power_wh70U160.10.1V
day_batt_discharge_power_wh71U160.10.1V
day_grid_buy_power_wh76U160.10.1A
day_grid_sell_power_wh77U160.10.1A
grid_frequency79U160.010.01Hz
day_load_power_wh84U160.10.1VA
total_load_power_wh85U32LE0.10.1VA
radiator_temperature90I160.10.1℃
igbt_temperature91I160.10.1℃
grid_side_voltage_l1_n150U160.10.1V
grid_side_voltage_l2_n151U160.10.1V
grid_side_current_l1160I160.010.01A
grid_side_current_l2161I160.010.01A
grid_power169I1611W
load_side_total_power178I1611W
battery_temperature182I160.10.1℃
battery_voltage183U160.010.01V
battery_capacity184U1611%
battery_status185U161
pv1_input_power186U1611W
pv2_input_power187U1611W
battery_output_power190I1611W
battery_output_current191I160.010.01A

link settings as documented (unverified): RTU; default 9600 8??; FC 03,16; RS232 or RS485

bench facts as documented (unverified)
connectorRS232 or RS485
max registers/read125
model register0
serial register3
firmware register13
doc revisionV117
field reports — community-sourced, unverified (checked 2026-06-11)
  • Deye-SUN-5K-SG03LP1 reading times out when more than 16 registers are requested at once, requiring smaller register ranges. [source]
  • Some Modbus TCP gateways (e.g., PUSR USR-DR134) fail when requesting the standard 125 registers per request, requiring a max_size limit of 120. [source]
  • The battery temperature sensor (register 182) has a scaling offset of 1000 (e.g., 1200 represents 20.0 °C), which was incorrectly decoded in some integrations (showing 75°C instead of 25°C). [source]
  • The internal RTC clock drifts massively (up to 10 minutes per day), causing scheduled charging/discharging windows to shift unless synced frequently via external automation. [source]
  • Undocumented register 205 ('Empty_V') acts as the battery voltage level corresponding to 0% SOC. If battery voltage drops below this value, the SOC instantly drops to 0%. [source]
  • confirmed: comms: baud_rates: [9600], default_baud: 9600, framing: ['RTU'], function_codes: [3, 16], notes: 'RS232 or RS485' — confirmed by Deye user manuals and community integrations (e.g., kbialek/deye-inverter-mqtt, kellerza/sunsynk)
  • confirmed: facts: doc_revision: 'V117', identification: firmware_register: '13', model_register: '0', serial_register: '3' — confirmed by Deye Modbus RTU protocol documents (V115, V118) where register 0 is Device Type, register 3 is Serial Number (SN byte 01), and register 13 is Slave MCU Version
  • confirmed: physical: connector: 'RS232 or RS485' — confirmed by Deye user manuals and community wiring guides
  • confirmed: quirks: max_read_registers: 125 — confirmed by standard Modbus RTU limits and Deye integration discussions
  • confirmed: Register map summary (run_state @ 59, day_active_power_wh @ 60, today_gen_power_wh @ 62, total_active_power_wh @ 63, day_batt_charge_power_wh @ 70, day_batt_discharge_power_wh @ 71, day_grid_buy_power_wh @ 76, day_grid_sell_power_wh @ 77, grid_frequency @ 79, day_load_power_wh @ 84, total_load_power_wh @ 85, radiator_temperature @ 90, igbt_temperature @ 91, grid_side_voltage_l1_n @ 150, grid_side_voltage_l2_n @ 151, grid_side_current_l1 @ 160, grid_side_current_l2 @ 161, grid_power @ 169, load_side_total_power @ 178, battery_temperature @ 182, battery_voltage @ 183, battery_capacity @ 184, battery_status @ 185, pv1_input_power @ 186, pv2_input_power @ 187, battery_output_power @ 190, battery_output_current @ 191) — confirmed by kellerza/sunsynk single_phase.py definitions and Deye Modbus RTU protocol documents

The trust ladder

Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.

If your device isn't here, upload its register map. Generation is free, and the connector keeps the rung it earns under testing.

To prove a connector against your own device, order hardware verification. If it doesn't verify, you don't pay.

Platform builders can license the verified library: machine-readable maps, the firmware matrix, API access.