Have confirmed working, information extraction via @wills106 version of solax integration - thanks very much. Thanks to Dad - @tba80 for the loan of his serial adapter.
@Biscuit where in the uk did your source your tsh-735 from? I note there are several vendors but always wary of purchasing from internet sellers without recommendations.
Just to add to this very useful information pool:
I have a Solis Hybrid 6kW inverter which was supposed to be supplied with a LAN stick, but came with WiFi.
The installer helped me get the Android app running on my phone.
The WiFi stick seemed unstable, despite good signal levels at the inverter location, so I asked them to provide me with the LAN stick originally requested. They did, I also asked to keep the WiFi stick as a backup.
The LAN stick was even less reliable than the WiFi, so thinking it must be faulty (I had not at that time found this forum), I asked them to replace it. They did.
That one also seemed unstable so - being an IT.firmware guy by trade - I decided to take the plunge and “update its firmware”, using an image from the Solis support forum pages. This totally bricked the LAN stick. I did not dare ask the installer for a third sample, so I have asked Solis Support to tell me how to un-brick my LAN stick - the ticket has been sitting ‘unassigned’ for ten days.
Meanwhile at some point, the WiFi stick had a hissy fit and stopped working, and was not associating with my wifi network.
I noticed that if i used the setup button, it was transmitting on an SSSID which had faulty characters in it - suggestive of memory corruption.
So I tried the factory reset button inside, and now the UI has reverted to some ancient looking orange themed page - I’m guessing this is some kind of ‘limp home’ factory image.
This UI does not even have a firmware upgrade option.
It is, however, reasonably reliably getting my data to Solis, so I’m loath to disturb it any further
My longer term plan is to passively tap the RS485 data (I know enough about modbus that I regard that as a doddle)
Questions for this Forum:
Any suggestions for reviving the dead LAN stick? It is the hardware described above legended ME-22X007-V31
The stick comprises an I2C interface chip connecting to the WiFi/Ethernet chip for initial programming
Any suggestions for pimping the WiFi stick given that its UI doesn’t offer a ‘firmware update’ button, and firmware for WiFi sticks does not seem to be available from the Solis website?
Whilst I know the stick only updates the cloud once every five or ten minutes (it seems to vary), how frequently does the stick poll the MODBUS registers on the inverter - does it only do that once every five minutes, or is it more frequent
These data logging sticks and the Solis Cloud offering are ‘badge engineered’ and made and supported by Solarman. I have searched to see if Solarman support older LAN sticks with updates but without success; you may be more adept at finding a suitable update. Support may be available to ‘professional’ users.
Yes, I have an older LAN stick which is just that - LAN. I also have a newer stick which pretends to be WiFi in the setup pages. I assume that the evolution has been from separate hardware, to combined LAN/WiFi, and now to WiFi only. I don’t expect that there are many professional solar farms with lots of inverters in a field using LAN data sticks.
Both Solis and Solarman operate worldwide across different markets, and I believe that hardware and firmware does not match outside the region for which it was sold, ergo never trust firmware posted on a forum, or grey imports. This may be causing issues when many different hardware and firmware (and protocol) settings are expected to work with just one global Cloud based standard.
My LAN stick originally updated like clockwork every 5 minutes (give a second or two). I have discontinued trying to use Solis Cloud and my LAN sticks as it became too unreliable, and I also cannot register my newer stick with the inverter/cloud. When it did work, I had the stick connected to the inverter via a tri-port serial box (allowing me to run the dual Modbus master stick and also my HA together). The box config pages allowed me to monitor Tx/Rx traffic on the ports. I was expecting the data stick to regularly poll the inverter, but my impression was that the stick-inverter communication was only once every five minutes. I really did not pay much attention at the time, but was puzzled by how little traffic (frequency and quantity) there appeared to be between stick and inverter.
The Solis Modbus protocol suggests reading no more than 100 bytes / 50 registers in one go, with an interval of at least 300ms between. To read all the inverter status and key holding registers as (eight) sequential 50-register blocks should therefore take no more than three to four seconds. I am currently directly polling (in Node-RED) my inverter at 20 second intervals with a manageable level of timeout errors. I suspect that reading too frequently could impact the inverter operation.
Thanks for those insights, Geoff. Once my new-ish system is fully handed over to me (I’m still haggling with the installer on a couple of minor points), I will use an RS485 to LAN converter (I think have a Moxa unit hanging around somewhere I could use) and start sniffing the traffic. I should be able to connect that in parallel with the WiFi stick as I don’t plan on writing anything to the inverter - all to well aware of possible nasty consequences! And yes, I know I mustn’t double-terminate the RS485.
Once I know what’s going on, I’ll probably go the same way as you and ditch the Cloud - although it’ll be quite a bit of work to replicate the nice graphs and long time data storage they offer.
Top of my ‘wish list’ is a simple display of battery SOC, easily visible to me and other people in the house, and HA should be a good way to go about that.
FWIW, my bricked LAN stick has the following attributes:
The LAN stick serial number is 1918451071
another label on the board reads 55-0059-002
The board version reads ME-22X007-V31
It comes up at the LAN link level, but sends no packets, not even a DHCP discovery.
Its architecture seems to have an 8051 variant acting as an on-board programmer, presenting an I2C interface on the internal programming connector.
Solis have so far ‘not assigned’ my ticket for the last 16 days. Not impressive.
I’ve also had a nightmare - my installer came and finished up the battery install, came with an S3 Wi-Fi stick. I wasn’t really interested since my above setup works better for me but I disconnected my RS485 so he could install the Wi-Fi stick. It worked and I browsed the solis cloud app for a couple of days before deciding to switch back to my old setup. Except one big issue, he’d tightened the Wi-Fi stick so much that it’s completely stuck into the inverter port. I managed to get the screw thread loose (after much trying) but it seems the green port underneath is rotating with it so I still can’t remove the stick.
I’m now worried the entire port is dead as the Wi-Fi stick isn’t even powered now. To say I’m annoyed is an understatement.
Figuring out my next moves, it might involve a Dremel and some delicate cutting.
All good now, with a bit of surgery. If someone is interested in my setup:
First, as the above photo shows: Protoss PW21-H (£20 from Aliexpress) - it’s DIN mounted so shares the meter DIN rail and is powered by the same 240v AC supply as the meter. It is connected to Solis inverter via the Comm port. It’s been absolutely bulletproof and once configured (which takes 5 mins), I haven’t touched it.
I use nodered to poll modbus TCP every 10 seconds. I have about 50 or so registers that I read in sequential groups then deserialise into their respective values. They are sent to MQTT and my nodered flow also generates and sends HA MQTT Autodiscover messages so you don’t have to do anything in Home Assistant to see your Solis inverter. I prefer this decoupled setup so I can restart HA to my hearts content without nodered skipping a beat. I have attached the flow below if anyone is interested. There might still be some bugs as I’ve only played with it for the last few days. With a little digging you’ll see it’s quite easy to extend with extra sensors and registers for any of the Solis registers found here (thanks to whoever found this!):
I’ve exposed a force charge switch which will configure the inverter to go into charge mode which means I can trigger it to charge whenever my electric is cheap - it does this by setting the timed charge time to 24 hrs and enabling timed charge mode (if it isn’t already enabled)- when switching off, it defaults the timed charge times back to my tariffs offpeak period of 2330-0530. I can also stop it from discharging with another switch (sets the battery discharge amps to 1A, the lowest you can set it - so ~50W).
Thank you to all those who posted above and in other threads I’ve come across, in particular to @Biscuit who was the main inspiration behind this setup. It’s been a journey but it’s been fun and now I have a far better inverter than I thought I had!
In case it helps someone… I have 3 Solis inverters, and get the hourly power from each using ModBus / ESPHome and use that in HA Energy. Only one ESP8266 + ModBus board required.
I found the plastic bit (after removing the threaded piece) of a bulk standard 7 pin DIN socket was the perfect fit to the inverter data connection. I 3D printed a screw on cover - but this is not necessary. No need to spend money on the genuine connector
R0 on the adaptor needs to be populated with a 0ohm resistor (a blob of solder) - this connects in the in-built 120ohm resistor across A and B. I also connected the ‘ground’ contact (Chinese characters) on the ModBus end of the adaptor to the ‘ground’ pins on the inverter data socket (but not to the ground or common on the ESP8266).
My first post on this excellent and very informative site … so please go easy on me
Thought I’d share plans for my next project, which is to be able to control/access my Solis RHI inverter while not interfering (I hope) with the SolisCloud data access in any way, and to do this in a very low cost manner. On this thread I can see solutions using RS-485 multiplexers to solve the issue of multiple MODBUS masters, but I plan a different approach which I haven’t come across … although that’s not say it hasn’t been tried, since I may have missed it in the forums.
I have a Solis RHI inverter with WiFi data logging stick and like many people I also want some basic local control of the inverter. The only thing I plan to control (from an ESP32) is whether the “Time of day” charge/discharge setting is RUN or STOP based on the Octopus Agile import/export prices.
My plan is to hack the WiFi stick to add an M5Stamp-Pico (an ESP32 from M5Stack) in between UART TXD and RXD signals that run from the WiFi sticks microcontroller (whatever it is) and the RS-485 driver (SP3485 chip). I’ll use one of the ESP32s UARTs to connect to the WiFi sticks microcontroller and another of the ESP32s UARTs to connect to the RS-485 driver on the 3.3v logic side. I only need to cut two traces on the PCB (or lift pins 1 and 4 on the RS-485 driver) and solder on 4 wires to the ESP32 two UART pins.
Here’s a picture of the RS-485 driver chip on the WiFi stick I have. It looks like it’s simple for me to do the mods to insert ESP32 where I need it.
Initially I plan to just forward the UART0_RXD to UART1_TXD and UART1_RXD to UART0_TXD so actually everything should continue to work as standard … it’s just that all the data is now going via the ESP32.
My next plan is to then send MODBUS commands to the inverter during the time when the WiFi sticks microcontroller isn’t using the RS-485 so there is no risk of a data clash. I’m expecting the WiFi stick microcontroller to only poll the inverter around every 5 minutes. I’ll have the ESP32 monitor the traffic on the WiFi stick microcontroller side to detect when it’s completed its 5 minute poll, then I should have a safe period to send various commands to inverter before next 5 minute poll, when I’ll switch back to simple data forwarding. If there’s a risk of the WiFi stick microcontroller sending a command at random times, then I can just buffer the command and forward it when at a safe time.
The total cost of this should just be the M5Stamp-Pico which is £6.00 … unless I destroy my WiFi stick of course … or worst still, I brick my inverter
If anyones interested I’ll update the thread with my progress and share my Arduino code.
Hoping my M5Stamp-Pico arrives this week, then I can get started.
Just realised that I’ll also need to cut track to pins 2 (receiver enable) and 3 (driver enable) on the SP3485 since ESP32 will need to control the SP3485 direction, so I’ll have a couple more wires to the ESP32 GPIOs for this. I might just take SP3485 off the board and solder it back on at an angle with only pins 5, 6, 7, and 8 soldered, since this makes it extremely simple to then solder on my wires to the ESP32.
As you might have guessed, I’m much more of a hardware engineer than a software engineer (although my embedded firmware is not too shabby), so making mods to boards is no problem for me. I would say that if you’re not confident doing such mods than please don’t … I’d hate to be (even indirectly) responsible for someone breaking their WiFi stick or even worse their inverter !!
Does anybody have issues with the SolaX modbus integration showing on Node-RED?
I am trying to set up an automation to charge the batteries from grid during the Octopus agile low rates.
Although the entities appear fine, the integration is nowhere to be found under the “Domain” in the “call service” node.
I have tried a couple off the shelf troubleshooting like removing and installing the integration again to no avail…
Thanks so much @megakid & @Biscuit !! This thread has saved so many hours!! (I was on the webscraping Solis cloud route)
A combination of waveshare RS485 to ethernet from Pihut & this plug/socket Exceedconn EC04681-2023-BF Male/Female for Solis/Ginlong Inverter RS-485 port | eBay meant I was up & running for < £37.
I do have some questions though, @megakid , why do you decode the values from Modbus in the extract nodes when they are available in the responsebuffer array or payload array?
The battery SOC is correctly entered in the MQTT but refuses to show on my HA dashboard (the other values do show) If I choose History & the inverter in HA, the SOC does show up correctly.
Finally, might be my setup but I only noticed the following now I’m looking at the data more closely, wondered if others have the same?
In Solis cloud, the total house consumption for the day is shown(& based on emporia is correct). Using the phone Solis app, it shows as zero. In the inverter reports ( & if I query Modbus) the daily energy import & export is always zeros, the total energy imported/exported does increase correctly .
Editing my post to reflect my better understanding now.
Hi,
This is great, works straight off my 3.6 S5 Solis hybrid. Original LAN data logger
No extra equipment & can keep the cloud as well.
Changing the update time means can do even faster, 20 seconds seems OK. I will slow down but handy to workout what the data means for sure.
“Solis Inverter DC power” is the Solar generation, my mistake not seeing it so have everything I could possibly want a the moment.
No doubt good reason but others seem to go to a lot of work & coding & even buy equipment to get these readings but this all seems very easy using the above github yaml in HA.
Done in minutes. Fortunately I did have the LAN data logger as he does say not work with the S3 Wifi so perhaps that’s the reason but would think almost worth buying the S2 dual Wifi & Lan logger if indeed it does work as advised
Solis advised me to get the S2 or S3 logger as more feature but not sure what I am missing.
I can’t see to buy the S2 logger in the UK though but guess available if you look hard enough.
I can read & set all the features via Solis cloud so not sure I will risk adding Send Settings via HA but perhaps would be handy to e.g force charge with a quick flick of a switch in HA.