Jimmyburnworld
New Member
- Joined
- Aug 2, 2022
- Messages
- 13
Does anyone have any experience with the Modbus RTU comms protocol on Solis inverters?
I have an RHI-5K-48ES-5G inverter and I would like to get data out of the 'COM' connector on the bottom of the inverter. My intention is to use an ESP8266 to poll the inverter for data, then serve it up on MQTT for Home Assistant.
The theory being that the Wifi adaptor available for the Solis products is a Modbus master which polls the inverter for data and then sends it to the cloud.
I've had a response from Solis technical support with a datasheet detailing the communications protocol, register addresses etc. I've found a blog where someone has done a similar interface using Python:
Try as I may, I cannot get the data out of the inverter. I've spent a fair bit of time trying to get a basic read working just using my PC and an RS485 serial converter, and I'm at the stage where I get a steady 'Illegal Address Error'.
1: Windows 10 laptop with USB-RS485 serial adaptor - actually have two
2: 2 core screened cable from RS485 adaptor to pins 3 (A) and 4 (B) on the COM connector on the inverter
3: Modbus Poll from https://www.modbustools.com/
4: Serial comms setup as: RTU, 9600bps, 8 data bits, 1 stop bit, None parity
5: Inverter address changed from 1 to 2, Modbus poll slave address pointing at 2
I've tried various 0x04 'Read Input Registers' requests. I even found an exciting lead that some Modbus devices will only respond to block requests where data is arranged in a chunk ie: Date:Time registers 3022-3027, however whether I read a single or multiple registers I get the same error code 02 'Illegal Address Error'
If I change any of the wiring, or if I change any of the serial comms settings I just get a timeout. If I change the slave address on the inverter back to 1 I get timeouts, back to 2, the error returns so I know the comms is active.
I used the code from the blog post to work up a Python script and this comes back with the same 'Illegal Address Error'.
If I didn't know better, its like there's a flag that the inverter needs to see set to allow it to communicate. Is it possible that the Wifi adaptor sets a flag in the inverter that allows communications?
Any input gratefully received.
I have an RHI-5K-48ES-5G inverter and I would like to get data out of the 'COM' connector on the bottom of the inverter. My intention is to use an ESP8266 to poll the inverter for data, then serve it up on MQTT for Home Assistant.
The theory being that the Wifi adaptor available for the Solis products is a Modbus master which polls the inverter for data and then sends it to the cloud.
I've had a response from Solis technical support with a datasheet detailing the communications protocol, register addresses etc. I've found a blog where someone has done a similar interface using Python:
Solar Upgrade Solis 1.5kW inverter and Raspberry Pi RS485 Logging
A new solar PV inverter installled with Raspberry Pi RS485 data logging
www.briandorey.com
Try as I may, I cannot get the data out of the inverter. I've spent a fair bit of time trying to get a basic read working just using my PC and an RS485 serial converter, and I'm at the stage where I get a steady 'Illegal Address Error'.
1: Windows 10 laptop with USB-RS485 serial adaptor - actually have two
2: 2 core screened cable from RS485 adaptor to pins 3 (A) and 4 (B) on the COM connector on the inverter
3: Modbus Poll from https://www.modbustools.com/
4: Serial comms setup as: RTU, 9600bps, 8 data bits, 1 stop bit, None parity
5: Inverter address changed from 1 to 2, Modbus poll slave address pointing at 2
I've tried various 0x04 'Read Input Registers' requests. I even found an exciting lead that some Modbus devices will only respond to block requests where data is arranged in a chunk ie: Date:Time registers 3022-3027, however whether I read a single or multiple registers I get the same error code 02 'Illegal Address Error'
If I change any of the wiring, or if I change any of the serial comms settings I just get a timeout. If I change the slave address on the inverter back to 1 I get timeouts, back to 2, the error returns so I know the comms is active.
I used the code from the blog post to work up a Python script and this comes back with the same 'Illegal Address Error'.
If I didn't know better, its like there's a flag that the inverter needs to see set to allow it to communicate. Is it possible that the Wifi adaptor sets a flag in the inverter that allows communications?
Any input gratefully received.