• Have you tried out dark mode?! Scroll to the bottom of any page to find a sun or moon icon to turn dark mode on or off!

diy solar

diy solar

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

I tried both boards atoms3 lite and the atoms3. The release version of 1.5.4 was complaining I needed to upgrade esphome to 2025.3.0. I did the upgrade and then the issue occurred where wifi refused to work. I did different variations of the yaml. None work.

I can confirm that AtomS3 works with YamBMS 1.5.4 / 1.5.5 with esphome 2025.3.3.
 
That's the point - instead of turning off charging on the last BMS, it should have switched to the Yam float voltage level.
I can try testing without the additional BMS charging logic, but I don't understand what I'll gain from this if the problem is with the additional BMS charging logic not working properly.

The BMS charging logic is custom code for you and I haven't modified it, so this is a bug you must have had with YamBMS 1.5.4 I guess, maybe never observed?
 
Ok, that's because unavailable entities are not part of the standard version of YAML.
Oops, shame on me.

The BMS charging logic is custom code for you and I haven't modified it, so this is a bug you must have had with YamBMS 1.5.4 I guess, maybe never observed?
Maybe. I cannot check now because i have only 2 days for history storage.

Am I understanding correctly that if the charging switch is turned off on all BMSs by custom BMS charging logic, then YAM can't switch to float mode?
 
Maybe. I cannot check now because i have only 2 days for history storage.

Am I understanding correctly that if the charging switch is turned off on all BMSs by custom BMS charging logic, then YAM can't switch to float mode?

Yes, and I just fixed this bug.

The YamBMS charging logic was to switch to Wait status if all BMS charge switches were OFF.

This will always be the case unless you import the additional BMS charge logic.

You just need to recompile your RP YAML and test the behavior again.
 
Last edited:
You just need to recompile your RP YAML and test the behavior again.
Could you also change the trigger for turning on charging all of the BMS so it activates when the Yam decides to switch to float?
Right now, from what I understand, the switching is tied to the YAM REBULK level.
The JK PB BMS behaves unpredictably when charging switch is off - about half the cases, it stops not just charging but discharging too.
This leads to situations where some BMS takes on the entire discharge load until its voltage hits the Yam Rebulk level, while the other BMS units don't discharge at all. Tying it to the Yam decision to switch to float would eliminate this unpredictable behavior.
 
Could you also change the trigger for turning on charging all of the BMS so it activates when the Yam decides to switch to float?
Right now, from what I understand, the switching is tied to the YAM REBULK level.
The JK PB BMS behaves unpredictably when charging switch is off - about half the cases, it stops not just charging but discharging too.
This leads to situations where some BMS takes on the entire discharge load until its voltage hits the Yam Rebulk level, while the other BMS units don't discharge at all. Tying it to the Yam decision to switch to float would eliminate this unpredictable behavior.

Done.

BMS switches will be turned ON if the charge status is EOC or Float.

I also fixed a small bug regarding the Force Float switch.
You need to copy the new code into your main.yaml or yambms_custom.yaml
 
Last edited:
Just ordered a Lilygo T-Connect S3 board. Now I've finally got my Sunsynk inverters parallel and the batteries too, I can combine up all 3x BMS's and use YamBMS properly now! :)
 
I can confirm that AtomS3 works with YamBMS 1.5.4 / 1.5.5 with esphome 2025.3.3.
I was doing some troubleshooting and I got it to work. Seems it was the wifi set up was causing the issue. The only difference I saw was the wifi that did not work was in WPA-PSA mode while the one that worked was in WPA2-PSA... Now I am connecting to it as per normal. Maybe this will help someone that encounters this issue.
 
Before i read all 128 pages of this thread, does anyone know if this will work with an XWPro/InsightHome?
 
@Sleeper85 Is it possible to force the YamBMS into float mode?

I'm asking because I don't have enough time to fully charge my batteries overnight and let the charge cycle finish the cut-off logic before my cheap electricity period ends. I can only run a full cycle on weekends. The "Charge Last" function for PV doesn’t work properly on my Luxpower 10k inverter—and I’m fairly certain it's the same with EG4 inverters—unless the BMS is already in float mode.
 
Last edited:
Helo @Sleeper85 . This is Imanol, the guy with the ESP32-ETH01-POE.

I'm trying to install the new version of the remote and I have this error:

1744220408070.png

I can't understand because I've selected ETH01-EVO board:

1744220446538.png

Another question, in this case, how could I configure manual IP?


Thank you very much my friend!
 
Helo @Sleeper85 . This is Imanol, the guy with the ESP32-ETH01-POE.

I'm trying to install the new version of the remote and I have this error:

View attachment 291004

I can't understand because I've selected ETH01-EVO board:

View attachment 291005

Another question, in this case, how could I configure manual IP?


Thank you very much my friend!

Welcome back 😉

In your yaml, in the board_options section, comment out uart2 and uart3. Only uart1 and can_esp32 are needed in your case.
 
@Sleeper85 Is it possible to force the YamBMS into float mode?

I'm asking because I don't have enough time to fully charge my batteries overnight and let the charge cycle finish the cut-off logic before my cheap electricity period ends. I can only run a full cycle on weekends. The "Charge Last" function for PV doesn’t work properly on my Luxpower 10k inverter—and I’m fairly certain it's the same with EG4 inverters—unless the BMS is already in float mode.
Found my answer in
Code:
yambms_custom.yaml
 
Welcome back 😉

In your yaml, in the board_options section, comment out uart2 and uart3. Only uart1 and can_esp32 are needed in your case.
Thank you very much, I'm you beta tester for this board? hahaha

In the end, I'm using "YamBMS_RP_JK-BMS_RS485_Modbus_mode2.yaml" but now I have this error:

1744262791887.png

Thank you very much for your support!!
 
Thank you very much, I'm you beta tester for this board? hahaha

In the end, I'm using "YamBMS_RP_JK-BMS_RS485_Modbus_mode2.yaml" but now I have this error:

View attachment 291154

Thank you very much for your support!!
I was trying to use this board some time ago (ESP32-ETH01-POE), but couldn't push OTA updates from esphome. Every time I wanted to upgrade, I nedeed to connect UART-USB connector. So i changed board to ESP32-S3-ETH where everything is working perfectly (and it is faster ESP-S3 variant)
How do you pushing OTA updates into this board? Maybe I use this board for other projects is OTA from esphome is possible.
 
I was trying to use this board some time ago (ESP32-ETH01-POE), but couldn't push OTA updates from esphome. Every time I wanted to upgrade, I nedeed to connect UART-USB connector. So i changed board to ESP32-S3-ETH where everything is working perfectly (and it is faster ESP-S3 variant)
How do you pushing OTA updates into this board? Maybe I use this board for other projects is OTA from esphome is possible.
This is my sixth project with this board and I am delighted.

One example:
1744280567318.png


And this is how I have YamBMS:

1744280686284.png

1744280707189.png


I correct the comment: this WAS the system I had but now I am not able to install the new YAMBMS... hahahaha
 
Last edited:
I've try local version (just in case) and same error, no space 😔

Maybe the only solution is change the board to 16MB one like T-ETH-Lite or Olimex...


If there is no way to use the ESP32-ETH01-EVO, I have reviewed the different options and I think I will stick with this one, what do you think?

I prefer to use the old ESP32 ETH01-EVO but just in case, this is another solution...


Thank you very much!!!!


1744356451227.png

1744356490676.png

1744356774618.png
 
Last edited:
@Sleeper85

Is it possible to send this parameter from Yam to inverter to emulate a specific brand?

Table from the LuxPower CANBUS protocol description.
1744368933283.png
 
Last edited:
This is already the case, it corresponds to the BMS name.
Do you have any ideas how the BMS of a compatible battery transmits this data to the LuxPower inverter?
Screenshot_2025-04-11-16-41-07-500_org.telegram.messenger-edit.jpg
When using a battery that's not on the LuxPower compatibility list, this additional battery data marked on screenshot is missing from the web interface. I assume that the BMS somehow identifies itself as "compatible" via CAN.

This raises the question of how, and whether it's possible to emulate this identification so that the inverter accepts YAMbms as compatible?
 

diy solar

diy solar
Back
Top