regarding writing to the registers, for control purposes, does the solis have to be set in a certain mode?
When using modbus on the sofar, you can read as much as you want, but for control it has to be put in a passive mode.
😊+1 I'd be interested in getting that to run in node-red as well
Yes, it does support 2 and 16.
Please make a separate thread as @graememk suggested. This one is already noisy as is
Finding the solis tcp stuff really interesting. (I've no use for it but for the likes of node red it could be very easy for others to pickup and run with it.)
You should spin that off into a new thread. It would be a great reference for people looking to do some automation, not just buried in this thread.
The write holding register function is already there, but I didn't put it in the example for fear people who don't know what they are doing could break stuff.
https://github.com/jmccrohan/pysolarmanv5/blob/master/pysolarmanv5/pysolarmanv5.py#L185
Do you know if the Solis Hybrid supports Modbus function codes 2 or 16? Can implement if they are supported. 16 would be particular handy for stuff like changing charge from grid charge periods.
Nice work. I have tested and it is working. I will need to modify it to suit my needs as I want mqtt and also expose data to Prometheus but that is on me.
The question/feature request that I have now is to be able to modify holding registers as this is what would allow to control inverter through automation. I am doing this through modbusTCP directly. As a test example we can take holding register 43004 with function code 6 to write single register. It takes integer 0 to 59 as it holds inverter time in minutes. After setting it read single register 33026 and see if the output matches.
I am not going to hold it back and willing to help the PV community :) For anyone on the east side of the country we can meet and do the upgrade. There are no guarantees given that it will work but from what I've seen it does not break if it fails, as it has a fallback firmware on the inverter. For people further away I can post as long as you post it back.
There are couple things to note:
PM me and we will try to organize this.
Those changes have been committed and pushed to Github now. I've also updated the example client to demonstrate what has changed.
"From what had been posted here and read elsewhere, a standard inverter will require secondary inverter so lots of writing, and messing around (at least from my DIY perspective)."
Eh ? Don't think you read that here. It adds an extra MCB / RCBO and a cable from the inverter to the board.
On the plus side, a storage inverter can be placed in a totally separate location than the solar inverter. Also, you could upgrade a solar inverter at a far lower cost than upgrading a hybrid.
I am definitely open to correction here and if so please correct me!
Get a small battery, unlock the grant and get a hybrid inverter straight away if you are more than likely going to get a battery.
From what had been posted here and read elsewhere, a standard inverter will require secondary inverter so lots of writing, and messing around (at least from my DIY perspective). Make sure you can justify a battery if going down that route.
So in theory couldn't you charge a small admin fee and ship that to other Solis users to upgrade their own firmware?
Well technically it was not a warranty thing. As inverter was running. I just wanted newer firmware version. I did not have to pay for the upgrade stick itself which I think is ~50Euro. It was just import tax on it.
What do you mean by UK and Taxes on it, any warranty item on a pre-brexit purchase that is supplied to you free of charge is not subject to import VAT.
I'm not going looking it up for you but just want to point it out, I have a replacement RCD board for my Zappi coming in next week from UK and there will be no VAT on it or any other duty.
Since installing a Solar PV & Battery system and going online on 20th October, my grid electricity usage is as follows;
Day rate: 70 kWh
Night rate: 481kWh (EV household hence this number being fairly high)
87% of usage on night rate.
Cannot wait until next summer!!!
That would be great. I read more than 100 registers and to that in batches, otherwise the whole read process is way too long.
Here is my code to read modbusTCP https://github.com/NosIreland/solismon2 you can see that I have them bundled together so the read takes just few seconds instead of minutes.
The output you are seeing is the six registers bitshifted to get a single value, which is what I thought most users would require. I hadn't considered your use case, but I can add new functions to return a list containing the value of each 16bit register, essentially skipping _format_response()
_format_response()
Thanks for code. It is working on mine but I have questions :)
How do you read and decode multiple registers? If I understand correctly I I just provide first register and then the quantity. so for example to read timestamp I would do
print(modbus.read_input_registers(register_addr = 33022, quantity = 6))
but the output I get is
2538764513312892796030158
and I have no idea how to decode it.
If I do individual registers, the output is fine but then it will take longtime to read all of them. I have similar way done but with modbusTCP and send first register and then length(quantity) but I get multiple outputs as I was reading one by one.
I've finished tiding up the code and published to Github now:
https://github.com/jmccrohan/pysolarmanv5
Let me know how you get on with it.
I got mine updated to version 35, but I think version 36 is out now. I haven't see any changelog.
Now that you are on a more recent release, are you able to get remote upgrades?
Version 33 now.
What fw version did you get?
As regards the new Modbus registers, if you decompile the Solis Cloud APK, it contains a full listing of both input and holding registers. 😉
/src/assets/3X_0[3,4].json
So finally after more than 2 years I got my Solis inverter firmware upgraded. As my inverter and firmware were old, over the air upgrade was not possible. It took almost 2 months of negotiations with Solis support to get upgrade stick sent to me. As it came from UK, had to pay taxes on it also. Now the biggest changes are in the battery area. Originaly I only had 4 options and now there are 23. Also it does allow to change 'Control parameters' before it would allow to change but would not save all of them. The charge/discharge limit was raised from 60 to 65A and it does actually charge at that rate. The backup mode was also fixed as it was not working properly before. There is also more information provided on the screen. I would expect that there are changes on the modbus side as looks like some registry addresses were changed but I have not checked this in detail.
Double?
Yup @graememk isn't the only one with that experience. It was about 2am that I frazzled 2 transistors on my BMS. Everything cabled and checked and I was just moving the batteries off the shelf and onto the floor.
But fuzzy 2am brain failed the double check everything rule and I fired up with 2 of the BMS cables attached to the wrong cells.
There is a sparky in the family so they could double check before plug in. Beginning to sound like getting an install without battery might be a reasonable option. Or unlock the grant with smallest battery then sell that battery.
and double checking the BMS wires before plugging in.. and not doing it at 12am.... thankfully in my case it was only a cheap balance board!
Absolutely not. You need a spanner or rachet, a crimping tool and a digital multimeter mainly. After that, you just need to take your time.
The batteries are a doddle. The time consuming part is wiring up the BMS
Not a lot to be honest. Plenty of help from more experienced folk on here.
Expertise required?
I wouldn't have a Leaf cell pack in my attic. If I had gone that route it would have had to go in the garage.
Maybe so, but they are in a metal box's with a built in brain with temperature sensors and isolation switches.
Look it's all personal preference but I wouldn't sleep easy at night not knowing I have that extra layer of safety.