diy solar

diy solar

YamBMS JK-BMS-CAN with new Cut-Off Charging Logic (open-source)

o.k Growatt Datasheet advised its a 95 Ah battery capacity , so maybe it has degraded over time, therefore i need to keep adjusting
i was watching it, so yes it hit 3.32 before it jumped to 0%

# Edit

Actually i think i need to inscrease the AH bcos it stops jumps to 0% around 47.5 volts , but i rather it is 0% at 46 volt range which is the 3.32 set

1711050064325.png
 
Last edited:
i was watching it, so yes it hit 3.32 before it jumped to 0%
Ok, so the BMS settings worked as expected then, didn't it?
What was the SOC before it hit 0%?

If my understanding is correct, the 100% and 0% voltage settings are for forcing the BMS SOC to a specific value.
It doesn't smoothly interpolate the SOC using those voltages.

As a result, if your OverDischarge setting is 10%, but the BMS went from 15% to 0% in one go... then the inverter has no chance to stop discharging at 10%.
 
Ok, so the BMS settings worked as expected then, didn't it?
What was the SOC before it hit 0%?

If my understanding is correct, the 100% and 0% voltage settings are for forcing the BMS SOC to a specific value.
It doesn't smoothly interpolate the SOC using those voltages.

As a result, if your OverDischarge setting is 10%, but the BMS went from 15% to 0% in one go... then the inverter has no chance to stop discharging at 10%.
That is correct - the inverter had no chance in stopping it at 10, so i have now reduced by BMS 0% SoC from 3.32 to 3.11 and trying again

# Edit

Now it did stop
but at an average v of 3.42

which means one of the cells must be triggering the stoppage,
Bcos is i have set it to stop at 3.11 (0%BMS SOC) and it is stopping at 3.4 only explanation is that one of the Cells capacity is degraded and also like Silverstone mentioned before during current flow the true value of the voltage is not well determined.
 
Last edited:
That is correct - the inverter had no chance in stopping it at 10, so i have now reduced by BMS 0% SoC from 3.32 to 3.11 and trying again
It seems to me that you are always working on the edge.

Keep in mind that even a small load step (increase/decrease in your consumption) can cause some battery current transients with associated voltage drops/swells. And you are not (unless the reporting by JK BMS to syssi softare is already a "statistics" format of min/max/avg/... instead of instantanous values) going to see those in MQTT ....
 
It seems to me that you are always working on the edge.

Keep in mind that even a small load step (increase/decrease in your consumption) can cause some battery current transients with associated voltage drops/swells. And you are not (unless the reporting by JK BMS to syssi softare is already a "statistics" format of min/max/avg/... instead of instantanous values) going to see those in MQTT ....
You read my mind - read my edit...
 
You read my mind - read my edit...
I didn't mean as a criticism, just a fact.

I don't know what time filtering the JK BMS has (I would assume some 10ms or so at least, except for the short-circuit protection) on top of which you have the MQTT publishing interval rate. But it's definitively not the same thing as putting an oscilloscope with some differential probe on and see it with some ~ 10 MHz bandwidth.

Just make sure you are neither hunting ghosts nor ignoring the big elephant in the room :) .
 
Nothing is wrong with the system, its just I am trying to get the max out of my system without causing any damage to the cells , otherwise i would just leave it at 48 v 0% SoC
 
If one cell is triggering the 0% threshold, yet the total voltage is well above 48v then the answer is simple.

Either one cell is degraded or - more likely - your battery pack is not balanced.
Get that sorted out first and everything else will be much easier.
 
Nothing is wrong with the system, its just I am trying to get the max out of my system without causing any damage to the cells , otherwise i would just leave it at 48 v 0% SoC
But this "0% SOC" logic ... is that just for the Inverter to force it to recharge the battery ? Or it's also used for protection ?

I guess in your case it's not too critical (if you are grid-connected and your inverter is NOT operating as a UPS).

In my case if the battery / inverter trips I lose ALL power in the house.
 
I didn't mean as a criticism, just a fact.

I don't know what time filtering the JK BMS has (I would assume some 10ms or so at least, except for the short-circuit protection) on top of which you have the MQTT publishing interval rate. But it's definitively not the same thing as putting an oscilloscope with some differential probe on and see it with some ~ 10 MHz bandwidth.

Just make sure you are neither hunting ghosts nor ignoring the big elephant in the room :) .
On the MQTT topic, i have studied it and i have managed to Setup and test Node-Red to Send and receive published info between my MQTT broker and clients
1711051357444.png
But i am just not sure how to apply the knowledge and implement it on this project as a real-life case scenario - if you know what i mean

i am sure i am almost there...
 
@MrPablo

Another project suggested that for a 2-battery-only config one can draw a serial connection from the ESP32 GPIO and use it on the RS485 port.

I wonder if your script covers this if I was to determine the GPIO serial ?

# Edit
But ofcourse My Solis RS485 port is used up for the Meter which i don't really need or use...but the inverter will be left with an error if you don't connect a meter - which i also find counterintuitive since Solis has not allowed 3rd party Meter integration (they confirmed that this is work in progress when i contacted them about it).
 
I know this is off-topic, so pardon me...just private me if you can help

a colleague of mine has a program that uses the Solis-HA integration to determine the cheap times and get the Solis to charge at those times
1711053094129.png

I have integrated my Solis and Octopus using the Provided API - I can now read off the tariff data and other data thanks to the integration - does anyone know how to take this beyond just reading data and be able to trigger the Solis to charge at selected cheaper times? (Private me if you can help) - thanks

Solis and Octopus Integration Screenshots
1711053382603.png1711053434716.png
 
Flash "Prepare for first use"
get the IP
and you should get that...
Hmm, I already have it running (flashed by USB originally) and with a reserved DHCP address. Can't find that option to 'prepare for first use'.
1711054007697.png
 
I know this is off-topic, so pardon me...just private me if you can help

a colleague of mine has a program that uses the Solis-HA integration to determine the cheap times and get the Solis to charge at those times
View attachment 203524

I have integrated my Solis and Octopus using the Provided API - I can now read off the tariff data and other data thanks to the integration - does anyone know how to take this beyond just reading data and be able to trigger the Solis to charge at selected cheaper times? (Private me if you can help) - thanks


View attachment 203525View attachment 203526
There is something similar for the Deye to set the Time Of Use using RS485 and HA.

So I would guess you could either:
- Set your FORCE CHARGE SOC LEVEL to something very high (basically Charge from Grid if SOC < 99%) - IIRC you had such "forcecharge" parameter in one of the screenshots you previously provided
- Configure the time of use in a similar way by setting the times via RS485
 
There is something similar for the Deye to set the Time Of Use using RS485 and HA.

So I would guess you could either:
- Set your FORCE CHARGE SOC LEVEL to something very high (basically Charge from Grid if SOC < 99%) - IIRC you had such "forcecharge" parameter in one of the screenshots you previously provided
- Configure the time of use in a similar way by setting the times via RS485
Yes - i know i can set time-of-use ....but the idea is to automatically set the time randomly picking times according to price without my involvement.
so i can fget n let the program charge

something like what this guy has done - but less complicated
 
There is something similar for the Deye to set the Time Of Use using RS485 and HA.

So I would guess you could either:
- Set your FORCE CHARGE SOC LEVEL to something very high (basically Charge from Grid if SOC < 99%) - IIRC you had such "forcecharge" parameter in one of the screenshots you previously provided
- Configure the time of use in a similar way by setting the times via RS485
Ah -you are saying the same thing
 
Can a little Keep-Alive function be added to the code - I just noticed that the ESP needed to be restarted this morning to get it working again...

# Edit
Scratch that Looks like something to do with the float is whats stopping it
 
Last edited:
I can also see that the charging stopped at 3.975 , i tried Force Bulk to get it this far
View attachment 31659
What other settings can I try to charge it to the 4.1 SoC that I have set on the BMS ?
I am thinking this is where i would have to consider adjustment

1711101598473.png

# Edit
i have decided to adjust the Over v Recovery instead...let see what happens next time.
 
Last edited:
Ah - I have just noticed something -the inverter reports 100% when i went to check
its 79% on the BMS this must contribute
 
The BMS reports 79%? The same BMS that is connected to your inverter via the CANbus connection?
What does the ESP32 report?
There's no logic in our code that sends 100% if the BMS is reading lower than that.
 
The BMS reports 79%? The same BMS that is connected to your inverter via the CANbus connection?
What does the ESP32 report?
There's no logic in our code that sends 100% if the BMS is reading lower than that.
Maybe the difference is between his two different bms, one connected to the inverter the other not...

Maybe one reports 100% (connected to the inverter), the other 79% (not connected to the inverter).

As I stated before unless you bring the voltage up for high enough and long enough, the SOC couter Is never going to properly "reset" to an accurate value...
 

diy solar

diy solar
Back
Top