Solis 5G Inverters

I recently had a solar setup installed at home, including a Solis 5G inverter and it includes the remote monitoring stick that seems to be common with these.

Obviously I wanted to log the data from the inverter myself, I know it produces plenty of juicy information, and the Solis Cloud is… well it has good information but the 6 mins refresh time just doesn’t do it for me, I wanted the kind of resolution that I am used to from my eMonPi setup.

This lead me down a few interesting rabbit holes (I am sure the same has been true for many of you with Solis / Ginlong devices / sticks etc etc…)

The options most people seem to go for, are replace the stick with a new RS-485 adapter or to just use the normal one and put up with the 6 min resolution.

After a whole lot of poking at the stick, and trying (and failing) to work out how it works, I found some excellent work by another GitHub user J McCrohan who wrote a Python3 tool “pysolarmanv5” that actually speaks the weird wrapped modbus, superb!

With that in hand, I bashed up a quick python script of my own to read the data I want and put it to eMonPi’s MQTT instance - and hey presto, much improved data resolution!

A word to the wise, this requires a new version of Python (3.8 minimum) so I built a new eMonPi install based on the excellent scripts / instructions here: GitHub - openenergymonitor/EmonScripts: Emoncms Stack Installation and Update scripts so that I could run the latest Raspbian / RasPiOS.

Finally for all of you salivating at the possibilities, my work is here: AndyTaylorTweet/solis2mqtt: Python Scripts for pulling data from your Solis 5G inverter, and pushing that to eMonPi MQTT (

Have fun with that!


For some idea of what data you will be able to see in eMonCMS on your eMonPi:


Once you get to that point, you can make some graphs etc, for example here is one plotting the PV power from the Inverter.

Hi Andy
I am grateful for your contribution and have installed the code on a rpi other than my emonpi. I’ve set the mqtt address accordingly and also populated the MODBUS server with the appropriate data.
I find that on running with debug=1 I get the following:

INFO:root:Connecting to MQTT Server
INFO:root:Connected to MQTT
INFO:root:Reading MODBUS
SENT: a5 17 00 10 45 00 00 09 15 08 72 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 81 73 00 01 e8 2d 15 15
ERROR:root:Unable to read data from MODBUS

I am able to read the Modbus adapter with a modbus simulator, albeit with some errors.

Could you suggest anything to allow me to debug what’s failing?


it is the Solis WiFi stick you are using? Do you have the Serial number of the STICK (not the inverter) also populated correctly?

It’s a solis ethernet stick I’ve used the stick’s s/n.

This may be a firmware difference, mine is a WiFi stick; somthing else to look at, see if you have the config_hide page; - Adjust the IP as required to navigate to your stick.

Check and see if the port number is different to mine:

That section is at the bottom - be warned, changing stuff in here, is at your risk and not mine :slight_smile:

Reading back over this, sounds like you COULD talk to the stick, but with some errors already, so it’s possible that your stick is different enough that its not using the SolarManV5 protocol, or that your inverter is different enough to use different registers - assuming the port number you used with your modbus test was the same one used in the python script?

Well there are differences with the f/w as the config info is at the http root. The default port was set to 30003 that gave the same result that I’m currently seeing so I changed it to match your example of 8899, just in case there was something internal in the SolarManV5 module.

Here is a grab showing what mine looks like, including the firmware versions.

Does your stick have the hidden config page at all?

The serial number I use is the device serial number (stick) and not the inverter serial number at the top.

For me - the MODBUS port is only settable in the hidden settings page, its not shown anywhere in the main config, as you can see, the remote servers are also not available to be set either (although they are in the hidden config).

These are the screens I get from my device.

My device doesn’t appear to have the hidden config, certainly not at the same url.

Apologies for the delay in relying but as a forum newbie I ran out of posts!

What other protocol types are there, my script does not work with ModBus/TCP (that actually should be easier to work with if you want to roll your own).

My stick uses the Solarmanv5 protocol (it may not be called that in the drop-down).

I’ve disconnected the stick as I’m connecting directly to the RS485 port instead and reading register values so that’s progress. I’ll swap back to the stick later and post the options it offers for protocol.

Hi Andy,

I had the objective, but used a spare Pi Zero and £5 RS485 adapter to get all the registers out of the solis and in to HA.

I just need to tweak the registers and make sure I’m using the right info, but 95% of the way there!

Yep seen that, but I wanted to retain the cloud connection, and sure I can piggyback the RS-485 connection, but where is the fun in that, when I can just talk to the stick :slight_smile: