Monitoring & Controlling a Hybrid Solis Inverter

SonsOfHigSolar
Posts: 25
Joined: Tue Sep 26, 2023 4:00 pm

Re: Monitoring & Controlling a Hybrid Solis Inverter

#71

Post by SonsOfHigSolar »

Dear Mr Pablo,

Apologies for adding another message but have you perchance had time to have a look? Thank you again!

James
MrPablo
Posts: 240
Joined: Mon Oct 17, 2022 1:26 pm

Re: Monitoring & Controlling a Hybrid Solis Inverter

#72

Post by MrPablo »

I'll confess that I completely forgot about this!
I'll update this weekend though, thanks for reminding me.
10x 405W JA Solar panels (4.05kWp) @ 5 degrees
3x 405W Longi panels (1.22kWp) @ 90 degrees
16.5kWh DIY LifePo4 battery
Solis inverter/charger
0.6kW Ripple WT
MrPablo
Posts: 240
Joined: Mon Oct 17, 2022 1:26 pm

Re: Monitoring & Controlling a Hybrid Solis Inverter

#73

Post by MrPablo »

Yet again, I forgot to update this thread when I said I would. This time however, my brain randomly poked itself and remembered to revisit it.

Below is a guide showing end to end how to query specific register(s) from the Solis hybrid inverter, using Node Red.

First, identify what registers you're interested in - this can be a single register, multiple that are next to each other, or completely disparate registers.
There's several documents out there that show what registers are available, I often use this one - https://www.scss.tcd.ie/brian.coghlan/E ... 8-1854.pdf

It's important to realise that registers are grouped into types, with different function codes used to query / write data.
Here's how it looks in this document.
Image
Most of the useful information can be found in the 3X register range, all of which is read only and with no risk of accidentally changing a setting.

Secondly, head to that section of the documentation.
Image

And then to the registers you're interested in
Image

In this case, I want to query:
- 33130 to 33131
- 33133
- 33134
- 33135
- 33137
- 33138

You'll notice these register addresses are all quite close to each other, with a total range of 33130 to 33138 - 8 registers (or 16 data frame bytes).
If querying multiple registers, it's sensible to request them in one batch, and the Solis inverter can support up to 100 data frame bytes (50 registers).
For reference, each register address is made up of two bytes.

Heading to Node Red, you'll need the following:
Image

Injection node will trigger your query when clicked.
Function node contains the query parameters.
Modbus-Flex-Getter node runs the actual query.
Buffer Parser node splits out the single response into multiple outputs.
Debug nodes show the actual results for testing purposes.

In the next post, I'll show how these nodes need to be configured.
10x 405W JA Solar panels (4.05kWp) @ 5 degrees
3x 405W Longi panels (1.22kWp) @ 90 degrees
16.5kWh DIY LifePo4 battery
Solis inverter/charger
0.6kW Ripple WT
MrPablo
Posts: 240
Joined: Mon Oct 17, 2022 1:26 pm

Re: Monitoring & Controlling a Hybrid Solis Inverter

#74

Post by MrPablo »

Once you have defined the registers you're interested in, you can configure the function node like below.

Image

fc - This is the modbus function needed to read or write to a register. As shown in the last post, this register range uses function 4.
unitid - The modbus address of the inverter. Earlier in the thread, I explained this is generally set to 1, but you can set this on the inverter itself.
address - The address of the first register to be read / written to. Even if you are referencing several registers, it's always the first one.
quantity - The number of data frame bytes - generally 2 x count of registers. For the Solis, this should be a max of 100.

The Flex-Getter node will be set up as per the guidance earlier in this thread.

Next, the Buffer Parser node.
As multiple registers are being queried, the inverter will send all information in one go, but it's likely you'll want to split these out.

Image

This is a very useful node, and relatively simple to set up. The lower window contains the configuration for each of the registers you're querying.

First, define the data type - use the modbus document earlier to confirm the type per register.
Take 'Meter Active Power', this has a type of S32 or Signed 32 bit integer. This is also written as int32, but notice there are two options - the Solis inverter uses Big Endian, or be.

Next, enter the name of the register for your reference.
After that, length is always set to 1. The length is already determined using the data type.

Offset is how you match the register address to the right output.
Offset will always start at 0 and increment upwards, with each complete register going up by 2 (remember there's 2 data frame bytes per register).
For example, take Battery Voltage. This has an address of 33133, compared to the starting address of 33130, giving a difference of 3. Multiply the 3 by 2 data frame bytes and you have an offset of 6.

I don't use the mask function, but there are guides online if you're interested.

Finally, the scale option. Sometimes a register stores information with a scale applied. For example, battery voltage is stored at 10 = 1.0V (as per the Solis modbus document), so you'll need to rescale the output to get a 'correct' number.
Applying a scale factor of 10 means that 499 becomes 49.9v.

Finally, the debug nodes are used just so the output can be easily checked. See below for an example.

Image


So, there you go. A simple guide to how the function and buffer parser nodes can be used to read or write Modbus registers using Node Red.
10x 405W JA Solar panels (4.05kWp) @ 5 degrees
3x 405W Longi panels (1.22kWp) @ 90 degrees
16.5kWh DIY LifePo4 battery
Solis inverter/charger
0.6kW Ripple WT
SonsOfHigSolar
Posts: 25
Joined: Tue Sep 26, 2023 4:00 pm

Re: Monitoring & Controlling a Hybrid Solis Inverter

#75

Post by SonsOfHigSolar »

Thank you so much! You're a hero! That's perfect.
Post Reply