A combination of Solis Cloud, Home Assistant via RS485 (Modbus) communication. This repo is a documented workaround for Solis inverters to connect Solis Cloud and the local Home Assistant based on my own experience. It includes references, examples of the code in Home Assistant, more about configuration, as well as wiring and all required components.
My PV installation commenced back in August 2022. Since then, I started my journey with Home Assistant, and several Solis integrations made by some clever folks out there. My main goal was to keep Solis Cloud functionality and allow for advanced monitoring, remote control, and general automation of my home equipment. As I was going through my journey, I found many obstacles and limitations with Solis Cloud, dataloggers, and its design. Therefore, to get over those obstacles, I have designed the below, which meets my requirements and it works quite well.
Most importantly, my design doesn't disconnect the Solis cloud, and works (coexists) with your local Home Assistant integration in combination with any Solis datalogger.
You can watch a great video from Gordon Markus
summarising his 12-months experience and Solis inverters limitations - https://youtu.be/F7r12UjzZyU
The main goal is to ensure that a datalogger can work as normal and without any distruption. The datalogger acts as the Master device, and it talks directly to the inverter (Slave). Having an additional Master (e.g., Waveshare Gateway) on the same RS485 network is to create collisions, which could affect all RS485 devices. Some dataloggers don't accept multiple TCP connections (e.g., S2-WL-ST
), and those will disconnect the Solis Cloud whenever used with an integration; others don't support Modbus TCP (e.g., DLS-W
, S3-WIFI-ST
), and some will fully rely on the cloud (S3-WIFI-ST
). Some obsolete dataloggers couldn't provide remote
functionality via Solis Cloud (e.g., DLS-W
, DLS-L
).
However, there are reports that remote
functionality started working with obsolete dataloggers after Solis' maintenance on 13 April 2023.
Here it comes the Waveshare gateway to query the inverter. It can serve multiple clients, keep the inverter's cloud reporting functionality, and is not limited by any supported datalogger. The below is my configuration, but the use case could differ per datalogger.
The main device is the Waveshare RS485 to PoE ETH (B) - the non-PoE version is described as per this guideline. There are no major differences between PoE and non-PoE devices, except for the convenience of powering those when you have multiple next in line.
I was trying different settings as I had some teething issues, and I noticed that it works better when the integration (I am using Home Assistant SolaX Modbus integration for my Solis inverter) is polling data more often (e.g., every 5 seconds). As much as no longer relevant, you can find more about those issues at the following address.
DLS-W - Solis Sensor, Home Assistant Solax Modbus, SolisMon3, Grafana
S2-WL-ST - Solis Sensor, Home Assistant Solax Modbus
I recommend using one of the pairs from the Ethernet cable for RS485 wiring. e.g., A twisted pair of blue
for RS485(A) and white-blue
for RS485(B). There is no need for 120 Ohms resistors at each end of the RS485. Both, Waveshare and the Inverter have resistors built-in.
Please use VirCom (not the Web Interface) to configure your Waveshare devices
- Follow the prerequisite (Optional) - Waveshare firmware update to
v1.486
- further discussed in this thread #14 - The
TCP Server
on my diagram and presented here as 187 GW acts as a gateway for other network devices (e.g., the datalogger wired toTCP Client
and for any compatible HA integration). - The Serial baud rate on the
TCP Server
is 9600 - default on the inverter; however, you can amend it independently to datalogger's settings - up to 38400 on the inverter, and match the same withinTCP Server
settings - increasing the baud rate is highly recommended. - The
TCP Server
-Modbus gateway type
is set toMulti-host non-storage type
- RS485 Multi-Host and Bus Conflict detection enabled. - The
TCP Client
-Modbus gateway type
is set toSimple Modbus TCP to RTU
- RS485 Multi-Host and Bus Conflict detection disabled. - You should use the IP address and the port number of your
TCP Server
when configuring anyModbus TCP
compatible integration - e.g., like in the Home Assistant Solax Modbus installation notes. - Therefore, the
TCP Client
presented here as 171 DLG has its own IP address (irrevelevant), but within itsDest IP/Domain
andDest. Port
config fields, it has to use the IP and the port of theTCP Server
, and it needs the same Serial config as on a datalogger - baud rate 9600 - default forS2-WL-ST
andS3-WIFI-ST
dataloggers, whereDLS-W
baud rate can be amended via its hidden config web pagehttp://IP/config_hide.html
. The same applies toDLS-L
underhttp://IP/hide_set.html
, but it is password protected with username:admin
, password:8 characters linked with a datalogger
- Both
TCP Server
andTCP Client
-Transfer Protocol
is set toModbus_TCP Protocol
- Waveshare is convertingModbus RTU
messages toModbus TCP
and vice-versa - screenshots below.
TCP Server Config
More Advanced Settings for TCP Server
TCP Client Config
More Advanced Settings for TCP Client
- The Waveshare used for the batteries connection is the same device, but the
Transfer Protocol
is set toNone
. I use VirCom to extend its connection to COMX on my laptop, so the software can connect to batteries and monitor them. Looking into usingModbus_TCP Protocol
and integrating with HA via MQTT or even setting the MQTT on the Waveshare, but that is not my priority at the moment.
Datalogger/Waveshare - Modbus TCP - direct connection - e.g., DLS-L
, S2-WL-ST
, Waveshare RS485 to PoE ETH (B)
- Home Assistant Solax Modbus - stable since 2023.03.2b18
- HA Solis Modbus
Datalogger - Solarman based - direct connection - e.g., DLS-W
Cloud connection - any Solis datalogger
- SolisMon3 - advertising Solis' Inverter data to MQTT - compatible with
DLS-W
- DLS-W
- DLS-L
- S2-WL-ST
- S3-WIFI-ST
- S1-W4G-ST (4-pin)
The below will be incompatible with the 4-pin Exceedconn EC04681-2023-BF Male/Female
connector, but could still work with the above HA Integrations
- S1-W4G-ST (USB)
- S4-WIFI-ST (USB)
- 2 * £35.00 - Waveshare RS485 to PoE ETH (B) - https://www.waveshare.com/wiki/RS485_TO_POE_ETH_(B)
- 1 * £28.00 - PoE Switch - P-Link PoE Switch 5-Port 100 Mbps (TL-SF1005P)
- 1 * £12.00 - Exceedconn EC04681-2023-BF Male/Female for Solis/Ginlong Inverter RS-485 port
- 1 * £2.50 - DIN rail
- 1 * £20.00 - Sourcingmap 240mm x 160mm x 90mm Plastic Dustproof IP65 DIY Junction Box Power Protection Case - I recommend a bigger box = more expensive
- 1 * £6.00 - Pack M20 20mm IP68 Waterproof Red Cable Glands, Suitable for 6mm - 12mm Cables, Plastic Nylon Compression Glands Connectors with Locknut and Washer - AVARTEK
- around £10.00 for some RJ45 cabling and connectors
£148.50 (pricing out of date) or £93.00 if you follow this discussion #24
Optional to connect batteries:
- 1 * £35.00 - Waveshare RS485 to PoE ETH (B) - https://www.waveshare.com/wiki/RS485_TO_POE_ETH_(B)
- Compatibility with other brands and inverters
- More Solution Concepts
- Battery Monitoring - HA, MQTT
I AM NOT RESPONSIBLE FOR ANY USE OR DAMAGE THIS DESIGN MAY CAUSE. THIS IS INTENDED FOR EDUCATIONAL PURPOSES ONLY. USE AT YOUR OWN RISK.
IF YOU FOUND THIS USEFUL, YOU CAN BUY ME A BEER