fmeili1
Solar Addict
I'm still a bit lost and try to understand how all this is related to get a clear picture.Just posted it to:
Enjoy!EG4 PowerPro polling, Raspberry Pi 4, WaveShare USB/Modbus, Python
And _PLEASE_ let us know if you sniff any more useful data about the Battery One Protocol!
Btw. I'm only using open loop (no communication between batteries and AIOs and no communication between each batteries) and I still want to use SA to show my battery data!
I'll try to summarize what I've understand so far after reading your posts and the comments with your python code.
- SA needs to use the batteries with the "default protocol" - by starting with dip switch 2 for the fist battery, 3 for the next and so on. SA is not able to use the so called "address 1 protocol" which seems to be a special EG4 protocol, which will be active if the first battery dip switch would be set to 1.
- Does the EG4-LL protocol specification, which I've already uploaded to the resource section, only describes this special EG4 protocol (address 1 protocol)?
If yes, what is the "default protocol" which is currently used to let SA communicate with the batteries? Is this maybe the so called "Pylontec" compatible protocol? Is there a link to a spec? In SA it's just called "USB Modbus RS232/485" in the battery communication settings. - My first assumption was that SA is using the protocol from the above mentioned EG4 specification (address 1 protocol) to communicate with the batteries - but this seems it was a wrong understanding from my side.
- If I'm right, I can forget the above EG4 "address 1 protocol" spec because SA would not longer work. As a result I need to do the modbus sniffing with the "default protocol" (Modbus RTU over RS485) - whatever it is.
- Because of your last sentence to let you know about results of the "Battery One Protocol", I now realize that your python code is using the "default protocol" (Pylontech?).
In the special EG4 "address 1 protocol" there are some additional registers defined e.g. 4 temperature sensors, cycle count, etc. which SA does NOT currently show for my EG4-LL batteries (the worst thing is that even the cycle count is missing). Here is an example from battery 1 to show which data does SA provide for my batteries - it's not very much!

This is what I'm using to connect SA to the 12 batteries.

Does this mean that the "default protocol" does not provide e.g. cycle count information or is it just a weakness of SA to not requesting/showing it?
The main reason why I want to sniff the modbus communication is to get the SOC value into my DIY Chargeverter CAN controller but it would also be great add some additional benefits while sniff some other values (e.g. cycle count, 3 more temperatures, etc.) and provide them via MQTT to my smart home system.
But now I'm not sure if these additional values are already on the "wire" to sniff them (e.g. cycle count) - independent if SA does show them or not.
I don't know if SA needs to request every defined modbus register explicitly which it displays or do the batteries broadcast all registers (e.g. including the cycle count, etc.) to the modus sbut SA is ignoring some of them? For SOC it would be possible to sniff it because SA is showing it, but I don't know if the other values e.g. cycle count are available. If not, my idea to sniff the additional data would not work. I don't even know ithe "default protocol" defined more than one temperature sensor or the cycle count, etc.
I know there are a lot of questions and thoughts - but maybe someone can bring a bit light in my confusion.