diy solar

diy solar

Solis S5: Various issues

Let us know if it powers up automatically when get PV again. Also, have you measured how much battery consumption reduces by when you put it in sleep mode?
Results:

Yesterday at midnight, battery SOC was 11%. I turned the inverter off using the GUI.
This morning at 8AM, battery SOC was still 11%. So it used less than 1% of 10kWh, or 100 Wh during 8 hours, which means less than 12W. It does seem to use much less power when off.

When off:

- RS485 and GUI are still operational

- It does not turn on automatically when solar panels receive sunlight.

- It seems to use solar to power itself instead of battery. DC bus voltage rises with solar voltage. This is logical (and unavoidable) because it uses boost MPPT topology so there is a diode between MPPT input and DC bus. I guess the internal electronics must be powered from both the batteries and the DC bus, with priority to the latter.

- If the battery is cut off (simulating BMS over discharge cutoff) and there is no solar, it will shut down completely. Then when solar is available, it turns back on. It doesn't remember the "OFF" setting, so it wakes up fully ON.

Solving the problem of draining battery while doing nothing useful because it is below the allowed SOC:

Even when off the RS485 port is still working and the MPPT DC input voltage can be queried, it returns correct values. So if you use a small computer that's always on, it is possible to check DC input voltage registers (or DC bus voltage) and if it looks high enough, issue a turn-on command via RS485.

However when it's off, the backup output is disabled, so the controlling computer will need to be powered from mains. This means it won't be able to turn the inverter on if there's a blackout. Fortunately mains voltage is available on RS485 (or it can be sensed easily with a simple circuit) so if the capacitors in the computer's switching supply have enough stored energy to keep it on for a second or two, that's enough to turn the inverter on via RS485 if mains voltage disappears.

Another solution would be a UPS, like a USB powerbank, to keep the controlling computer on. Or it could be powered from the 48V battery directly.
 
Progress!

Register 43052 rwr_power_limit_setting contains a value between 0 (0%) and 10000 (100%).

If internal export manager (EPM) is active (ON in the Export menu) it will constantly write to this register, so anything we write to it will be overwritten.

If internal EPM is off, this register becomes usable.

Without battery, the inverter will output a power proportional to this register on the grid port, of course limited by what PV panels can output. The manual says 10000 (100%) corresponds to the rated power of the inverter, but this doesn't look accurate. Anyway the important thing is that
we can control export power directly via RS485 port without MITM'ing the smartmeter protocol.

With battery, it will use non-exported power to charge the battery, so this can be used to control balance between export and charge. However it doesn't want to export all the power, and still uses some to charge the battery. There's probably another setting somewhere for that.

If it is set to zero, the inverter stops both exporting and charging the battery. This also happens when another inverter in the house exports more power than the export setting on the Solis, so I guess the internal EPM must set this register to zero when it freaks out.

If it is set to 1, it stops exporting but charges the battery with all available PV power.

It seems to require "No meter" setting, I'm not sure.

Update:

Okay. If I disable EPM and meter, it keeps the battery current at whatever it was. The EPM must stop updating the register that control this, so if it was using the battery to export power to power the home, then... it keeps doing it.
Then I wrote values to the above register: it controls the whole power output (battery discharge+PV) not just the PV.
 
Last edited:
I found the register that controls battery current (43717) but it is forbidden to write to it! In fact most interesting registers support write command but throw a modbus exception when attemped.

Oh well, it was worth trying. I guess I'd need to sniff out the comme between a Solis Export Manager and the inverter, but I don't plan on buying one.
 
Success!

I have written a modbus server in Python that pretends to be an Eastron SDM120 smart meter. Once connected to the inverter, this "smartmeter" can feed any data I want to it. EPM is ON, FailSafe is ON, maximum export 2kW, Self-Use enabled.

How this works depends on the "Meter placement" setting.

Meter Placement = House: the meter measures only power consumed by the house, it does not measure power from the inverter

The inverter will export the absolute value of active power reported by the meter on its grid AC port. So if my fakemeter tells the inverter "the house is using 1kW", then the inverter will output about 1kW, using either PV or batteries, and it will charge the batteries with remaining PV power. It's as accurate as power measurement inside the Solis, so there's about 50W error. This allows complete export control, but not battery charge from grid, because of the absolute value. Bummer.

Meter Placement = Grid: the meter measures whatever the house+inverters imports or exports from grid, including this inverter.

Solis adjusts its exported power to bring power reported by the meter to zero. If the meter reports exported power (from another inverter), Solis will charge from grid to absorb it. So this allows complete control of the inverter, with one caveat: data reported by the fakemeter must include power output from the Solis. Otherwise, if it sees the meter report a constant "import of 1kW" it will keep increasing its export power until it reaches the maximum. Basically it behaves as an integrator, instead of direct control as in the previous case. I am waiting for the other USB-RS485 dongles to arrive to MITM the link between inverter and smartmeter. From this experiment it should work fine and allow complete control. There is no absolute value issue.

My main problem is the Solis shutting down if it detects exported power > EPM export power limit. Setting export limit to a high value is not a proper solution because that causes it to export more than the legal limit. However this is easily solved if I MITM the connection, all I have to do is cap the values returned by the meter at the legal limit, which means I can set EPM limit to the legal value, and it won't export more than that. So it looks like my main problem, which is to have export control with two inverters, is solved.

Meter Placement = Grid+PV inverter: I have no idea what this setting does and it's not described in the manual. I think it means using a meter on the solis and another meter on the grid. If someone has any information, I'd be glad to know!
 
Last edited:
I received the USB-RS485 interfaces and implemented the smartmeter proxy.

The laptop is connected to the Solis meter port and pretends to be a smartmeter. Using another interface, it queries the actual meter. It forwards the data to the Solis after tampering with it.

Solis will try to bring power reported by the meter to zero. So, if I add a constant value to power reported by the meter, Solis adjusts its output power in the other direction. It works absolutely fine and can also be used to control charging from grid. Using this method, export control with two inverters should also work fine.
 
Modbus -> laptop -> python -> mqtt -> clickhouse -> grafana

1674128148792.png

Main house meter is Eastron SDM630 which is quite fast, it updates its power reading in less than 0.2 seconds (here the water heater was turned on and off). So it can be used to drive the future power router without any issue.

The inverter is much slower to react, takes up to 5 seconds to catch up. There's probably a parameter for that somewhere in those undocumented registers... I wish it would query the meter more often than once per second.

Clickhouse is nice to store time series data, I put all the MQTT stream into it, and it achieves a compression ratio of 12x. It also coalesces data into materialized views, to speed up queries on long time ranges...
 
For some reason the battery charging current seems to be limited to 66A. This is visible on the plot above: on the left, yellow trace "battery power" is flatlining at 3.5kW, and it is exporting instead of charging harder. I thought the inverter could charge at 100A... Battery BMS sets the limit to 160A so it should not be the problem. Any idea?
 
The Orange Pi has arrived! It works great.

I'd like to emulate an Acrel ACR10RH meter, but it contains some reserved registers... and without those values the Solis will not recognize it.

If anybody has one and could dump registers 0-65 fcode 3 that would help a lot! lol
 
Strike that, I reverse engineered Acrel registers, it's emulated now.
For some reason, Solis only queries power from Eastron meter every 2 seconds, but it queries from Acrel every second.
So it adjusts its exported power twice as fast with Acrel meter...

The meter can be queried about 10 times/second, so it's really not breaking a sweat lol
 
Got fed up with Grafana, too damn slow. I tried Bokeh, much better.

 
All good detective work. Let us know if it powers up automatically when get PV again. Also, have you measured how much battery consumption reduces by when you put it in sleep mode?[/URL]
Extremely low, a few watts or less.
However when in sleep mode it cuts off the backup output, so I added an external DPDT contactor to switch backed-up loads between grid and backup output.
 
Solis EH1P-6K teardown time! With pictures!

Turns out the recurrent fan alarm had something to do with the delivery man throwing the inverter in its box over my 2 meter high fence... quite the feat lol.

Would love to see your teardown but malheuresement-ly I don't seem to avez les correct permissions to see any of your fichiers :)

"Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message."

Any chance of posting them here quand vous avez un moment?
 
Alright! That's the heat sink, but you've seen it already.
IMG_20230205_182718.jpg

The cylinders in the center are the magnetics, MPPT inductors, and probably two transformers for the 48V battery converter.

The whole inverter case is a single piece screwed on the heat sink, there's a seal for IP68 rating. It opens easily, here's the connector panel, normally at the bottom of the inverter, seen from the inside.

IMG_20230205_183107.jpg

The board is the LCD controller, it also handles all communications (meter, modbus, CAN, etc) which do not seem to be isolated, no special filtering either. It is linked to the power board via a 10 pin ribbon cable (top right). They put protection diodes on the cable to the power board. The grid port CT is on this board, but not the voltage measurement, which explains why the grid port power measurement is not very accurate...

IMG_20230205_183128.jpg

Besides that, nothing special to say about the board, it's not possible to read the part numbers due to the waterproofing varnish.
 
Bolted on the heat sink are two power boards, mounted mezzanine style with extremely chunky reinforced standoffs, plus plenty of normal board standoffs. That explains why nothing broke or fell off when the delivery man threw the inverter over the fence! lol

IMG_20230205_183951.jpg

Nice mounting of power semiconductors with "Ginlong" branded plastic clips. Apparently they read that famous appnote: the screw hole in these transistors is not the best way to mount them, it is better to apply pressure on the center of the silicon die with a clip (usually spring steel) to avoid one side being pressed against the heat sink more than the other which creates hotspots. This right angle mounting style also lets the legs bend a little bit with thermal dilatation, unlike vertical mounting which sometimes ends up pushing the pads out of the circuit board when the legs get hot (and therefore longer).

IMG_20230205_183945.jpg

Now the top board which contains filtering, current measurement and relays.

IMG_20230205_183216.jpg

This is probably the DSP board that drives everything...

IMG_20230205_183419.jpg

Now looking a bit more closely, the inside of this inverter is a damn fashion show, all big name brands everywhere: big ZETTLER 35A relays...

IMG_20230205_183501.jpg

Pretty much all the little caps are United Chemi-con 105°C, brown ones are KY series, only 2-3 Chinese caps on the whole board, also 105°C rated. All the film caps are EPCOS, there's a ton of them, even the damn MOV's are EPCOS not no-name stuff...

IMG_20230205_183525.jpg

Copper on this board is really thick, probably 2oz according to my calibrated fingernail, they didn't skimp on the stuff!

Lower level of the mezzanine, all the HVDC bus caps are EPCOS again...

IMG_20230205_183816.jpg


Nice PCB wire to board terminals with everything done right, crimped sleeved etc. The big toroid inductor cores are wrapped with insulating foil, not just counting on the paint to prevent shorting the wire coil if vibration rubs off the insulation... lots of nice details, this is definitely not Voltronic :ROFLMAO:

All the screws are stainless, even inside, and the washers too. Magnetic screwdriver is useless, I had to hunt for one under the sofa.

It's not possible to say much about the circuitry because it's all SMD on the bottom side, so it's not visible without disassembling everything, and I'm only in there to fix the fan alarm.
 
And suddenly... a disgusting bodge! Looks like they ran out of caps and had to hand solder smaller one to make bigger ones...

In the background there's a huge herd of film caps which hints at the 48V conerter being a resonant design.

IMG_20230205_183900.jpg

And we reach the goal of this expedition! Yes indeed this fanless inverter has two fans inside, which provide some extra cooling on the 48V converter. They're only moving air inside the enclosure, not in contact with outside air. The downside is they mostly blow how air, but that spreads the heat inside and uses the whole enclosure as a heatsink, not just the back.

IMG_20230205_184157.jpg

The fan on the right got a bit crushed when the inverter landed on my lawn, so I filed off about 0.1mm of plastic that blocked the blades, and now it turns smoothly. Battery charging current is no longer limited to 70A, it reaches the full 100A, and it no longer complains about fan alarms.

Conclusion: OK it's a Chinese inverter but the parts quality level is absolutely excellent and it looks well built. Victron's gonna have to shave off their prices a bit lol.

Some of the design is a bit weird like the fan blowing hot air inside the enclosure, that feels like a late addition to the design. I wonder if the new S6 version will still have it...
 
Fantastic - merci beaucoups :) Good to see how well it's built.
 
The record so far:

8kw solar input -> 5kW battery charging + 3kW export (not bad for a "6kW" inverter)...

...However, the inverter reports an internal peak temperature of 75°C, yikes!

Since it is mounted on a large board along with the rest of the electric gear, I mounted the board 3cm away from the wall, cut two square holes in the board behind the inverter, and inserted two Arctic P12 PC case fans right behind the inverter heat sink. They suck air from behind the board and blow it on the heat sink. So the fans are mounted vertically and in cool air, which is best for bearing life.

-> At full power, peak inverter temperature 45°C, much better.
 
Fans installation:

fan mount 1.JPG

Side view with inverter heat sink (inverter mounted on board which is installed ~3cm away from wall):

fan mount 2.JPG



Inverter internal temperature (modbus), no fans, at 7kW peak power, very hot:

no fan.JPG

With fans: 45°C peak at 7.5kW, much better:
2x Arctic P12 behind.JPG
 
Back
Top