verified connector library

EG4 18kPV hybrid inverter

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 only confirmed at the hardware-verified rung.

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
state0U161
vpv11U160.10.1V
vpv22U160.10.1V
vpv33U160.10.1V
vbat4U160.10.1V
soc5U161%
ppv17U161W
ppv28U161W
ppv39U161W
pcharge10U161W
pdischarge11U161W
vac_r12U160.10.1V
vac_s13U160.10.1V
vac_t14U160.10.1V
fac15U160.010.01Hz
pinv16U161W
prec17U161W
iinv_rms18U160.010.01A
pf19I160.0010.001
veps_r20U160.10.1V
veps_s21U160.10.1V
veps_t22U160.10.1V
feps23U160.010.01Hz
peps24U161W
seps25U161VA
ptogrid26U161W
ptouser27U161W
epv1_day28U160.10.1kWh
epv2_day29U160.10.1kWh
epv3_day30U160.10.1kWh
einv_day31U160.10.1kWh
erec_day32U160.10.1kWh
echg_day33U160.10.1kWh
edischg_day34U160.10.1kWh
eeps_day35U160.10.1kWh
etogrid_day36U160.10.1kWh
etouser_day37U160.10.1kWh
vbus138U160.10.1V
vbus239U160.10.1V
epv1_all40U32LE0.10.1kWh
epv2_all42U32LE0.10.1kWh
epv3_all44U32LE0.10.1kWh
einv_all46U32LE0.10.1kWh
erec_all48U32LE0.10.1kWh
echg_all50U32LE0.10.1kWh
edischg_all52U32LE0.10.1kWh
eeps_all54U32LE0.10.1kWh
etogrid_all56U32LE0.10.1kWh
etouser_all58U32LE0.10.1kWh
tinner64I161
tradiator165I161
tradiator266I161
tbat67I161
max_chg_curr81U160.010.01A
max_dischg_curr82U160.010.01A
charge_volt_ref83U160.10.1V
dischg_cut_volt84U160.10.1V
bat_capacity97U161Ah
bat_current_bms98I160.010.01A
max_cell_volt_bms101U160.0010.001V
min_cell_volt_bms102U160.0010.001V
max_cell_temp_bms103I160.10.1℃
min_cell_temp_bms104I160.10.1℃
bat_volt_sample_inv107U160.10.1V
t1108I160.10.1℃
v_bus_p120U160.10.1V
gen_volt121U160.10.1V
gen_freq122U160.010.01Hz
gen_power123U161W
egen_day124U160.10.1kWh
egen_all125U32LE0.10.1kWh
eps_volt_l1n127U160.10.1V
eps_volt_l2n128U160.10.1V
peps_l1n129U161W
peps_l2n130U161W
seps_l1n131U161VA
seps_l2n132U161VA
eeps_l1n_day133U160.10.1kWh
eeps_l2n_day134U160.10.1kWh
eeps_l1n_all135U32LE0.10.1kWh
eeps_l2n_all137U32LE0.10.1kWh

link settings as documented (unverified): RTU; default 19200 8N1; FC 03,04,06,16; Minimum polling period: 1s. Register width: 2 bytes.

bench facts as documented (unverified)
terminalsRS-485
wiring notesCommunication method: Universal Asynchronous Transceiver (UART)
max registers/read40
protocol notesThe inverter software groups the registers into 40 groups of 0-39, 40-79, 80-119 and so on. When querying 40 registers, the starting address must be 0 (0-39), 40 (40-79 ), 80 (80-119), it is not allowed to query registers across groups at the same time.
serial registerHold 2-6
firmware registerHold 9-10
field reports — community-sourced, unverified (checked 2026-06-11)
  • Register 67 (Tbat) is documented as battery temperature in degrees C, but in practice, it does not return battery temperature; instead, it acts as a bitfield or counter for battery status / Over-Current Protection (OCP) count. [source]
  • The requirement to include the inverter's serial number in every Modbus request applies to the INV485 port (shared with the Wi-Fi module), but does not apply when communicating via the METER485 port. [source]
  • There are significant discrepancies in bit assignments for registers like 110 (H_FUNCTION_ENABLE_3) and 179 (H_FUNCTION_ENABLE_4) between the official EG4 spec and actual Luxpower-based code implementations. [source]
  • confirmed: comms defaults (baud rate 19200, no parity, 1 stop bit, RTU framing, function codes 3, 4, 6, 16) — confirmed by the official EG4 18KPV 12LV Modbus Protocol document [3.1.1]
  • confirmed: quirks: max_read_registers: 40, and register grouping (0-39, 40-79, 80-119, etc.) — confirmed by the official EG4 18KPV 12LV Modbus Protocol document
  • confirmed: identification: firmware_register: Hold 9-10, serial_register: Hold 2-6 — confirmed by the official EG4 18KPV 12LV Modbus Protocol document
  • confirmed: register map summary (state @ 0, vpv1 @ 1, vpv2 @ 2, vpv3 @ 3, vbat @ 4, soc @ 5, ppv1 @ 7, ppv2 @ 8, ppv3 @ 9, pcharge @ 10, pdischarge @ 11, vac_r @ 12, vac_s @ 13, vac_t @ 14, fac @ 15, pinv @ 16, prec @ 17, iinv_rms @ 18, pf @ 19, veps_r @ 20, veps_s @ 21, veps_t @ 22, feps @ 23, peps @ 24, seps @ 25, ptogrid @ 26, ptouser @ 27, epv1_day @ 28, epv2_day @ 29, epv3_day @ 30, einv_day @ 31, erec_day @ 32, echg_day @ 33, edischg_day @ 34, eeps_day @ 35, etogrid_day @ 36, etouser_day @ 37, vbus1 @ 38, vbus2 @ 39, epv1_all @ 40) — confirmed by the official EG4 18KPV 12LV Modbus Protocol document and community integrations

generated by gemini:gemini-3.5-flash · harvested from https://www.dth.net/solar/luxpower/modbus/EG4-18KPV-12LV-Modbus-Protocol.pdf (EG4 Electronics); manual-faithful — the document's claims, panel risk: LOW — panel concurs, no field disagreements; proved interop-verified on 2026-06-10 · recorded 2026-06-10

The trust ladder

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

Have a device that isn't here? Upload its register map — generation is free, and the connector earns its rung by being proven, not claimed.

Need it proven on your own device? Hardware verification — if it doesn't verify, you don't pay.

Building a platform? License the verified library — machine-readable maps, firmware matrix, API access.