v12.0.0
What's Changed 📦
Version 12 is a new major release of the Battery-Emulator, with many enhancements and MQTT changes that might require attention when updating. Please familiarize yourself with the release notes carefully before OTA updating to this version.
-MQTT: reduced memory usage and improved reliability
This release significantly lowers the heap usage of the MQTT module, with the biggest gains on double and triple battery setups, and fixes a bug where batteries 2 and 3 reported battery 1's charged and discharged energy totals. Cell voltages and balancing states are now published every 60 seconds instead of every 5, combined into a single message, while all live values — power, current, battery voltage, SOC, and cell min/max/delta — continue to update at the normal publish interval. Availability on the /status topic is now published retained once on connect, following the standard last-will pattern.
Two changes affect existing setups. Battery 2 and 3 values have moved from suffixed keys on <name>/info (such as SOC_2) to their own topics, <name>/info_2 and <name>/info_3, using plain un-suffixed keys. The separate balancing_data* topics have been removed, with that data now included in spec_data* under the cell_balancing key, ensuring perfect sync with cell_voltages. Home Assistant autodiscovery users need to take no action, as entities migrate automatically; only manually configured MQTT sensors, Node-RED flows, and similar integrations need updating.
-Inverter Charge Taper 📉
This releases implements an optional, battery-integration-independent charge power taper based on scaled SOC: the allowed charge power is linearly reduced from full at (100% − band) down to 0 W at 100% scaled SOC, with an optional configurable floor (minimum charge power held through the tail of the band). Configurable via a new checkbox next to the existing low pass filter setting, with taper band (percent) and floor (W) fields shown only when enabled.
-Periodic BMS reset improvements
Periodic BMS reset can now be performed at either 24h (default), or a 48h interval. There are now also two optional guards, shown in the web UI only when the periodic reset is enabled. Why do we need the setting? It's observed that for example AZE0 likes to finish balancing. If BMS rebooted during balance, it won't restart. ZE1 can overbalance, so it may be wise to intrerrupt it daily. The user has to have a choice here to improve battery balancing operation
Apart from all this, there are several other bugfixes and enhancements. Please check out the full list of changes below
Taking this release into use ⚙️
Important
In order to OTA update to this version, you already need to be on a v10 release!
Note that v10 was a major new release of the Battery-Emulator software. The first time when taking a version > v10.0.0 version into use, you are required to perform an initial one time USB setup via this webpage! This is because we changed the flash frequencies, partitioning layouts and other under the hood changes to ensure longterm system stability. After any v10 has been installed via USB, following 10.X.X releases can be updated over the air.
Quickstart video: https://youtu.be/sR3t7j0R9Z0
Batteries 🔋
- Ford: Adjust cell temperature offset to make temperatures more reasonable by @TheOfficialBatteryMan in #2583
- Ford: Safety
⚠️ Use actual battery charge/discharge limits instead of user estimated values by @dalathegreat in #2580 - MEB Battery: Implement BMS Reset from webserver interface by @malec1984 in #2638
- Nissan LEAF: Safety; Adjust battery voltage limits for top charge by @nagyrobi in #2657
- Nissan LEAF: Bugfix: Fixed a bug where info for double/triple batteries would not be visible on the More Battery Info page by @nagyrobi in #2670
- BYD Vehicle: Speed up sourcing of pack voltage & current from CAN / add insulation resistance by @demon1300 in #2656
- Dyness Pylon: Corrected calculation of cell voltages by @tekampe-oss in #2679
- Safety:
⚠️ Make interconnect check more reliable for double/triple batteries by @dalathegreat in #2357 - Improvement: Add guards to periodic BMS reset and add 48h option by @nagyrobi in #2668
- Fake battery: Support triple setup, mirror pack voltage, fake balancing by @nagyrobi in #2659
- Fake battery: A bit more realistic by @nagyrobi in #2669
Inverters ⚡
- Feature: 🔨📉🔋SOC-based, universal charge power taper towards inverter by @nagyrobi in #2628
- Make SOC-based charge taper 🔨📉🔋 mandatory for estimated power battery integrations by @nagyrobi in #2637
- Improvement: Remove old charge power rampdowns in favour of the new inverter based "SOC-based charge taper" by @dalathegreat in #2678
- Added "Inverter detected" event for Modbus and RS485 inverters by @nagyrobi in #2634
- Solax: Tidy log output by @jonny5532 in #2631
- Fronius: Allow faster reboots by reporting STANDBY until DC bus is live by @nagyrobi in #2666
- VCU Zombie: VCU mode bitmapping fixes by @dalathegreat in #2647
- Sungrow: SBR cleanup and updates by @aferrara in #2675
Connectivity 🛜
- MQTT: Significantly reduce heap usage, especially on double/triple battery setups by @nagyrobi in #2643
- MQTT: Improvement: Add generic MQTT autodiscovered Insulation Resistance sensor by @nagyrobi in #2671
- MQTT: Add configurable Home Assistant MQTT discovery topic by @StarkJohan in #2592
- Syslog: Allow syslog server to run on low flash boards by @nagyrobi in #2645
Housekeeping 🧹
- Feature: Make CPU temperature configurable, with an offset by @dalathegreat in #2639
- Improvement: Remove obsolete "Use CanFD as classic CAN:" setting by @dalathegreat in #2646
- Improvement: Apply user current caps to low pass filter input by @nagyrobi in #2627
- Improvement: Skip unchanged values in NVS settings store to reduce flash writes and prevent task overruns by @nagyrobi in #2625
- Improvement: Web UI: Only offer double/triple battery for integrations that support it by @nagyrobi in #2661
- Improvement: Make core-task CAN logging non-blocking to prevent task overruns by @nagyrobi in #2624
- Bugfix, NVM: allow max charge/discharge to be set to 0 by @jonny5532 in #2633
- Improvement: Make sure we don't try to send to uninitialized CAN interfaces by @jonny5532 in #2630
- Fix measure-firmware-size artifact filter by @ngehrsitz in #2642
- Make USB debug logging non-blocking to prevent task overruns by @nagyrobi in #2640
- Unifiy build & release (uncompressed) by @ngehrsitz in #2615
- Remove checkprogsize rebuild by @ngehrsitz in #2653
- Update gitignore file by @dalathegreat in #2667
- Fix inverter CAN alive-event handling in update_machineryprotection by @ekholm in #2677
- Bugfix: missing newline on truncated log lines by @nagyrobi in #2680
- Bump actions/setup-python from 6 to 7 by @dependabot[bot] in #2682
New Contributors 🦸
- @TheOfficialBatteryMan made their first contribution in #2583
- @ekholm made their first contribution in #2677
Full Changelog: v11.1.0...v12.0.0