Solis modbus VenusOS integration

So, the slow process has started. This morning I wired a 3-point plug to the Solis, then discovered it only starts up if it has PV, carried it to the garage and plugged in some PV cabling. It works well.

Slowest relay test I’ve seen in my life. Makes my ABB PV-inverter look like a speed freak, and the ABB is already slow compared to the Multiplus. Not that it matters… you have a full minute to connect anyway. Just an observation.

I tried the Wi-Fi stick, and almost immediately gave up on it. After configuring it and putting it on the Wi-Fi, it appears I am now locked out of local access and it only gives me cloud access. I was hoping there’d be more one can do over TCP. Oh well.

Then I discovered I need a “Exceedconn EC04681-2014-BF” plug to connect to the modbus connection. Or… if you open the Wi-Fi dongle, you can also just unplug the PC-board and use the connector that came with the Wi-Fi stick. A bit overkill, but saves the time of getting the correct connector, and I’m not going to use the Wi-Fi stick in the long run anyway.

As a test, I connected the Solis to the output of the Multi (because at the time we also had load shedding). I tried to set the Grid standard to GEN50 (as I’ve seen recommended) but it had no GEN50 option, so I left it on NRS097. I was pleasantly surprised to see that it runs quite stably on the output of the islanded Multi. I even ran my tumble dryer, which normally I cannot do along with all the other loads, and it worked just fine with the extra capacity added to the output.

I’m fairly impressed. Next, we’ll see how easy it is to interface, or not. The downside: The interface is modbus-RTU, and will require some soldering :slight_smile:

I’ll document how it goes here. Don’t expect too much progress too fast though. This is a side-project.


Just in case this helps:
[Solis Grid-tied Inverters Latest Full 10.24]RS485_MODBUS Communication Protocol.pdf (476.6 KB)

Yup, that’s the document I have. There are a few things they don’t have that will probably have to be calculated (for 3-phase setups). Specifically, they don’t have individual per-phase power and energy values, only a total.

It is usually sufficient to simply divide everything by 3, since PV-inverters to generally feed phases equally, but it is a tiny bit inaccurate. They tend to feed the phases with equal current, so over time the small differences in voltage adds up. But a divide-by-three approach is probably okay, even if not what I prefer.

Small progress report: I have an old Octo-GX wired to the Solis, with the usual RS485 cable. I sacrificed the Wi-Fi dongle (in theory I could solder the wires back on if I want to use it again) rather than go hunting for the required socket. I’ve managed to fetch some values from the device, so the comms work. That’s how far I got while I was waiting for the glue to dry on the EVSE charge-handle :slight_smile:

1 Like

Let me know hat it looks like, ill send you some. Have many solis spare cables stacked away, even some spare ethernet dongles if you want one.

It’s an Exceedconn EC04681-2014-BF. The 4-pin female one. Can’t seem to find it locally, either eBay or some overseas source. Which is why I decided to just hack the one I’ve got.

Do you want a new Wifi or Ethernet dongle?

If I’m going to butcher it it probably doesn’t matter. I also already butchered one so I’m unsure what the point would even be :slight_smile: And I don’t really have a need to use the dongle either, once it is integrated with the GX the socket will be in use and I won’t be able to use a dongle anyway.

I dont want to butcher anything. I want to send you a 4 pin cable plus a dongle to ensure that you can still connect to cloud for monitoring should you need it. But looking at the layout of your home, i am not sure how you would get an ethernet cable to the solis. and wifi might be to weak.

Mmmmh. You know what, I think you can use that dongle for firmware updates. And I do have WiFi reception in the garage, even if it is a tad weak.

Okay, ill send you all three of them. :crazy_face:

You made my day by fixing that typo :stuck_out_tongue:

1 Like

Alright! Finally have proper contact, just as the sun is setting.

The trick with this inverter, is to remember that UNLIKE most modbus stuff out there, or at least the ones I’ve dealt with, it makes a distinction between input registers and holding registers. That is to say, if you use modbus function 4 (read input register) you get something different from register 2999, than if you read the same register with function 3 (read holding register). The one gives you the product model, the other gives you the year-component of the clock on the inverter.

The stuff I need are all input registers. Which is unfortunate, because the code base I want to use for a base has holding-registers hardcoded at the moment. We’ll figure it out.

1 Like

ESPHome makes this type of integration quite easy Modbus Controller — ESPHome
Someone already did a lot of work here GitHub - grob6000/esphome-externalcomponents: A collection of external components for esp-home

What are you using to integrate?

@plonkster Perhaps there should be some clarification, perhaps in the title, that you are integrating this into VenusOs?

1 Like

Hi @plonkster

Solis is very popular on the grid-tie side, one or two suggestions.
Check out what Wifi adapter you have as it may come from one of the suppliers who supply DEYE & Sunsynk.


In which case there are integrations for both of them into Home Assistant on the Sunsynk/DEYE inverters.

There is also a move in the Solar industry to standardise communications between inverters/batteries etc so it may be worth while trying the Sunsynk/DEYE integrations and seeing if you can get them working with a bit of tweaking as the Modbus values may be the same.

Check out &

Don’t see Solis on it unfortunately

If you want to use ESPhome, you can use Slipx06’s YAML ESPhome code for the Sunsynk/DEYE inverters and just change the Modbus register values where required.

@plonkster Saw this video that I thought you might be interested in on connecting to a Solis

OK, I am going in a different direction with this. While I like the idea of talking to the inverter directly, the reality is that your PV-inverter is often in a different location to the rest of the stuff (in my case it is so), and therefore you really want the device on Wi-Fi, or some other kind of network.

One possibility is a modbus-tcp gateway. I’ve looked at a few, only expensive ones available in the country right now, not worth it.

So this is what I have been messing with for the last two weeks, an hour every night before bed:

It’s an ESP32, wired to a MAX485 on another board, and here I have it wired to an EM24 via modbus-RTU, but the plan is to wire it to the Solis instead. The EM24 stands in because the Solis doesn’t work at night :slight_smile:

The ESP32 runs Micropython, and it simulates sunspec register layout. It actually looks like a PV-inverter to a Venus-GX.

The Sunspec protocol implementation is extremely slap-dash. There are a lot of registers marked “mandatory” which are simply not populated. Tough luck.

And of course, it connects to the Wi-Fi instead of requiring a cable.

There is a lot more polishing needed. It has a built-in web server, a built-in modbus-tcp server, and of course the rtu loop. All of this uses about 50k of the 100k available memory. It still needs the web interface expanded so it can be configured from there. And AP mode so you can set it up.

Then, ideally, it should support a few profiles, so it can be easily adapted to translate other kinds of hardware as well. Initially it will likely be just single-phase and 3-phase Solis inverters.


Hi @JacoDeJongh, do you still have parts for me, whatever you have? I have nothing for the Solis-1P2.5K-4G.

Ethernet Dongle?
Firmware upgrades?
AC connectors?
Not sure what else … till Plonkster gets the GX interfacing working.

@plonkster, when you get it working to your satisfaction, no rush on my side, I would like to offer you some money in exchange for making me one too … if you are interested?