diy solar

diy solar

EG4-LL v2 ID1 Modbus Registers

mwolter

New Member
Joined
Feb 12, 2023
Messages
1
Location
SoCal
TL;DR Has anyone done this already and found what these values are or can you help me guess the modbus register descriptions for 30020 through 30036?

Hello Everyone,
My goal is to use an ESP32 to sniff the modbus data from the inverter as well as the comms between the battery and inverter and pass the info to Home Assistant. There's a few reasons for this but mostly to filter and calibrate the values before being sent to Home Assistant and to also remove a Raspberry Pi. Don't need another computer to monitor and maintain. I'll do a nice write up here regarding all this when it's done and working.

Anyway, poked and prodded and found how to passively sniff the communication between an EG4 3000 EHV-48 v2 and an EG4-LL v2. For those unaware, this is the native closed loop communication between the inverter (in battery mode LI 4) and battery (ID 1). I have the values but unfortunately the descriptions are not documented and I have no idea what some of the values are. Searched the forums here, Google and GitHub and didn't find anything.

In case anyone asks, this communication is not documented in EG4-LL Battery MODBUS Protocol between UPS(SMPS) and BMS (Version V01.06). Not sure what they documented there, maybe its for the v1 battery or possibly the communication between batteries when daisy chained.

Here's where I am so far. The logs below are from sigrok-cli and it's the response from the battery to the inverter with real world values. I only have one EG4-LL battery, not sure if these values would be different with additional batteries daisy chained. Every two seconds the inverter sends a request, and the inverter responds with data from registers 19 to 35. The first value is the hex value, the second is converted to decimal and the text after is a description of the value. Any line with a ? is not confirmed or I have no idea.

Any help would be greatly appreciated. Thanks ?

Frame ByteRegisterHex / Dec ReceivedDescription
00x01Slave ID 1
10x03Function 3
20x22Byte Count 34
3, 40x13 / 190x0066 / 102State -- 101 Standby, 102 Charging, 103 Discharging) - UInt16
5, 60x14 / 200x0000 / 0?
7, 80x15 / 210x0047 / 71SOC - UInt16
9, 100x16 / 220x1509 / 5385Volts x 10 - UInt16
11, 120x17 / 230x0492 / 1170Current x 10 - Int16
13, 140x18 / 240x001F / 31Battery Temp - UInt16
15, 160x19 / 250x1388 / 5000?
17, 180x1A / 260x1BBC / 7100SOC x 100 - UInt16
19, 200x1B / 280x2710 / 10000? Max Charge or Discharge x100 - UInt16
21, 220x1C / 280x0205 / 517?
23, 240x1D / 290x0000 / 0?
25, 260x1E / 300x0019 / 25Cycle Count - UInt16
27, 280x1F / 310x0000 / 0?
29, 300x20 / 320x0000 / 0?
31, 320x21 / 330x15E0 / 5600?
33, 340x22 / 340x0000 / 0?
35, 360x23 / 350x2710 / 10000? Max Charge or Discharge x100 - UInt16
37, 380x36ABCRC16/Modbus (least significant byte first, actual CRC is 0xAB36)

230817: updated table with latest data
 
Last edited:
They come out of the DEYE factory so probably the same register would be my guess. I have a video on connecting up to Home Assistant using an ESP32, that may help you.
OP is about a battery modbus registers, not an inverter.

Btw, @mwolter I reached pretty much the same point as you did (https://diysolarforum.com/threads/eg4-6500-modbus.54210/page-2#post-837069). I would have saved a lot of time if I had found this thread first :)

I'm waiting for a RS485 T so I can connect the master inverter on one side, the ID1 EG4LLv2 on the other side and a ESP32 in the middle that can sniff the data sent to the inverter. I will also see if its feasible to query the 16 registers at address 113 (see my post linked above) that have the individual cell voltages in mV. The request and reply for these 16 registers has to happen within the ~500ms of idle time between the EG4 6500 inverter and the ID1 battery.
 
Back
Top