Releases: dalathegreat/Battery-Emulator
Release list
v12.3.0
What's Changed 📦
DFRobot Edge101
This release adds support for the new "DFRobot Edge101" hardware.
ESPNow v2
The release also updates the ESPNow protocol for external displays from v1 -> v2. External projects connecting to BE will need to update to the v2 protocol off ESPNow to continue functioning
General fixes
The release also significantly improves Wifi strength on multi-AP installs, lots of fixes for BYD Vehicle, Nissan LEAF and Tesla batteries, and significantly improves the MQTT-HomeAutomation integration. Apart from all this, there are several other bugfixes and enhancements. Please check out the full list of changes below before updating
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 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 🔋
- BYD Vehicle: Improvement; Source BYD power limits and temperatures from raw CAN datastream for faster update rate by @demon1300 in #2718
- Stellantis e-CMP: Triple battery support 🔋 🔋 🔋 by @dalathegreat in #2772
- Nissan LEAF: Balancing status detection based on reported shunts by @nagyrobi in #2662
- Nissan LEAF: Show detected vehicle generation on the main status page by @nagyrobi in #2794
- Nissan LEAF: Fixed Hx value being unavailable on on ZE0/AZE0; exposed Hx over MQTT; add QC & AC charge count; remove BMS ID; faster startup; cosmetics by @nagyrobi in #2790
- Tesla S/3/X/Y: Stop overwriting Tesla gateway message defaults with zeros on fresh installs by @ekholm in #2724
- Tesla S/3/X/Y: Fix BMS signal values by @greenoem in #2807
- Tesla Legacy: Allow deeper discharge on Legacy Tesla by @dalathegreat in #2814
- Improvement: Add config option to allow tuning of charge limits (Ford/CMFA/Kangoo) by @dalathegreat in #2796
- BMW iX, DTC: Add DTC 21F151 by @dalathegreat in #2815
Inverters :zap
- Fronius: Add total energy amount & BMS temperature to BYD protocol registers by @malec1984 in #2781
Hardware 🤖
- Added "DFRobot Edge101" new Battery-Emulator hardware support by @ngehrsitz in #2722
- LilyGo T-2CAN: Move BMS Power to GPIO45 on "T-2CAN FD" to avoid pin conflict by @brynrichards in #2789
Connectivity :w
- BETA: Streaming CAN logging over WiFi by @jonny5532 in #2769
- ESPNow: Upgrade ESP-NOW from v1 to v2 by @nagyrobi in #2700
- Wi-Fi: Log AP device connections by @ngehrsitz in #2787
- Wi-Fi 🛜: Significantly improved signal strength on multi AP networks by @nagyrobi in #2797
- Wi-Fi: UI and Logs enhancements around how Wi-Fi information is displayed by @nagyrobi in #2805
- MQTT: Log publish failures once per outage, fix mislabelled event log by @nagyrobi in #2792
- MQTT: Added HW name and SW version, mark emulator entities as diagnostic type by @nagyrobi in #2795
- MQTT: HX value from Nissan LEAF available via MQTT by @nagyrobi in #2790
- MQTT: Publish optional heap metric diagnostics for Home Assistant if user desires so by @nagyrobi in #2811
- MQTT: Run Home Assistant autodiscovery only on demand and after firmware updates by @nagyrobi in #2803
Housekeeping 🧹
- Safety:
⚠️ Make UPDATE events lower priority than ERROR ones by @jonny5532 in #2786 - Library 📚 Update ESP32 to v3.3.11 by @dalathegreat in #2766
- Improvement: Comment out logging for verbose MQTT errors and messages by @nagyrobi in #2767
- Improvement: Calculate uptime strings without ctime by @ngehrsitz in #2771
- Improvement: Make core time arithmetic width-deterministic (uint32_t) by @ekholm in #2709
- Improvement: Fix two test-order dependencies, and make CI able to see them by @ekholm in #2785
- Improvement: Change identify_build.py to generate a header instead of using defines by @jonny5532 in #2791
- Improvement: Logging: Remove duplicate log entries and add syslog notice severity by @nagyrobi in #2798
- Improvement: Performance; Gate time measurement macros on the profiling setting by @nagyrobi in #2802
- Improvement: Sync settings-page defaults with boot defaults (6 mismatches) by @ekholm in #2697
- Improvement: Link the status page title to the documentation site by @nagyrobi in #2812
- Github: Add size report to job summary by @ngehrsitz in #2768
- Github: Autodetect build version by @ngehrsitz in #2788
- Github: Build speedup by removing compiler build, move werror to all builds by @dalathegreat in #2806
- Unit test: Cover the contactor closing sequence, its startup inhibit and its fault latch by @ekholm in #2776
New Contributors
- @brynrichards made their first contribution in #2789
Full Changelog: v12.2.0...v12.3.0
v12.2.0
What's Changed 📦
🔋 This release adds support for new batteries: Volkswagen MQB support & MG 50kWh LFP support & Double battery MG Gen1 support
💥 This version also adds collision reset for Volkswagen MEB, removing the need to connect ODIS tool to perform collision clear!
⚡ BYD Vehicle batteries also no longer throw serious electrical leakage DTC error codes, with the introduction of the new iso-disable feature!
📜 DTC reading via More Battery Info is also added for Volvo SPA, and CMFA EV Platform
Apart from all this, there are several other bugfixes and enhancements. Please check out the full list of changes below before updating
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 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 🔋
- New battery 🔋 VW MQB Evo 2024+ based on MEB by @malec1984 in #2754
- Volkswagen MEB: Implement BMS crash reset, ODIS no longer required to clear crashed batteries by @malec1984 in #2730
- Volkswagen MEB: Optimize CRC8 calculation by @malec1984 in #2744
- Volkswagen MEB: Optimize MEB HTML strings by @malec1984 in #2757
- Safety
⚠️ Double/Triple battery setups now clamp power down to inverter sent value properly. Risk of exceeding battery limits without this fix! By @jonny5532 in #2739 - Nissan LEAF: Under the hood changes to DTC reads by @nagyrobi in #2734
- BYD Vehicle: Feature - Added turning off batteries own isolation testing by default, to avoid P1A0000 "Serious Electrical Leakage Fault" and reduced charge/discharge power by @demon1300 in #2755
- BYD Vehicle: Added few DTC-descriptions by @germanfrau in #2743 & #2747
- Volvo SPA: Added DTC Code reading to More Battery Info page by @dalathegreat in #2721
- CMFA Platform: Added DTC Code reading to More Battery Info page by @jonny5532 in #2741
- MG HS/MG5/MarvelR UDS refactor: Rebases the MG HS integration on the new UdsCanBattery subclass. It also renames it MG-GEN1 since it now supports ZS/MG5/MarvelR by @jonny5532 in #1941
- MG Gen1: Add support for 50kWh LFP pack by @jonny5532 in #2764
- Renault Zoe Gen1: Fixed a bug that caused total pack voltage to be ~3V too large by @Dibblah1 in #2753
- Battery polling improvements under the hood to reduce codesize
- ISOTP/UDS library tweaks (const-ing the things) by @jonny5532 in #2735
- UdsCanBattery superclass by @jonny5532 in #2738
Inverters ⚡
- Add "Inverter is offgrid" checkbox that downgrades some faults to warnings to make offgrid operation more reliable by @ekholm in #2726
Hardware 🤖
- Refactor SD support to use SPI for significantly lower resource usage by @ngehrsitz in #2761
Housekeeping 🧹
- Add a favicon to the web UI by @ekholm in #2727
- Github: Ignore the per-environment sdkconfig files by @ekholm in #2742
- Github: Give every environment the same managed-component set by @ekholm in #2740
- Github:Add shared ESP32 and ESP32S3 targets by @ngehrsitz in #2746
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #2748
Full Changelog: v12.1.0...v12.2.0
v12.1.0
What's Changed 📦
This release adds DTC reading for Nissan LEAF and Ford EV batteries. This functionality is available from the "More Battery Info" page.
Apart from all this, there are several other bugfixes and enhancements. Please check out the full list of changes below before updating
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 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 🔋
- Nissan LEAF: Feature: Added Read battery DTCs via More Battery Info page by @nagyrobi in #2681
- Ford Mach-E: Feature: Added Read battery DTCs via More Battery Info page by @dalathegreat in #2690
- Ford Mach-E: Add more CAN sending towards battery to reduce amount of DTCs active by @dalathegreat in #2702
- BYD Vehicle: Improvement: Source cell min/max from 0x446 broadcast, drop redundant UDS polls by @demon1300 in #2706
- BYD vehicle: Add P1A4800 & U012100 DTC-description by @germanfrau in #2695 & #2696
- FoxESS battery: Refresh CAN keep-alive properly and stop overwriting BMS-reported voltage limits by @ekholm in #2710
- Allow BMS reset off time up to 600 seconds instead of 60 seconds max by @nagyrobi in #2685
Inverters ⚡
Hardware 🤖
- Basic support for Stark LED RGB addon by @StarkJohan in #2676
- Equipment stop: Safety
⚠️ Wait 7seconds max for zero current before opening contactors, to avoid welded contactors when using equipment stop by @ekholm in #2713
Connectivity 🛜
Housekeeping 🧹
- Github Actions: Cache custom_sdkconfig image for faster builds by @jonny5532 in #2704
- Github Actions: Fix failure reporting in the build step by @ngehrsitz in #2720
- Cleanup: Remove dead build_cxxflags lines: RTTI is already disabled by the IDF default by @ekholm in #2693
- Bugfix: Deduplicate CAN aliveness checks and fix shared corrupted-CAN warning being cleared by healthy batteries by @ekholm in #2688
- Improvement: Make absolute millis() comparisons wrap-safe (49.7-day rollover) by @ekholm in #2707
New Contributors
- @germanfrau made their first contribution in #2695
Full Changelog: v12.0.0...v12.1.0
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 https://gi...
v11.1.0
What's Changed 📦
This release adds initial support for CCS charging. It also significantly improves connectivity, and Volkswagen MEB platform support with DTC reading.
Stark CMR, a chargebyte CCF and a 4kW Fronius Primo working together

Volkswagen MEB, diagnosing DTCs without ODIS directly in Webserver

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 🔋
- FEATURE: Add support for bidirectional charging via CCS by @M4GNV5 in #2460
- MEB Battery: Add DTC reading via More Battery Info page by @malec1984 in #2573
- MEB Battery: Read SoH from BMS by @malec1984 in #2614
- MEB Battery: Add sending of Klima_07 message to reduce number of DTCs by @dalathegreat in #2589
- Nissan Leaf: Improvement, balancing status now properly reported by @nagyrobi in #2588
- Pylon HV: Fix Pylon protocol compatibility with GCE and similar BMS by @BatteryPlug in #2622
- Tesla S/3/X/Y: 106s cell detect + Lower flash usage (Digital HVIL optimized) by @dalathegreat in #2578
- Flash optimization: Combine BYD/MEB DTC renderers together to save resources by @jonny5532 in #2579
Connectivity 🛜
- Improvement: Wipe RF PHY calibration data on factory reset and network reset by @nagyrobi in #2598
- Improvement: Static IP single-field IP entry, add missing DNS server setting by @nagyrobi in #2581
- Improvement: Cybersecurity, warn when AP starts with default password, log provisioning window expiry by @nagyrobi in #2593
- Bugfix: Disable WiFi driver persistence which may cause task stalls by @nagyrobi in #2591
- Bugfix: MQTT HA entity discovery issues and add third battery support for MQTT by @nagyrobi in #2577
- Bugfix: Remove double mDNS init 🐛 by @nagyrobi in #2616
- Feature: Adds the "Battery charging! (Inverter limiting)" info via MQTT sensors by @StarkJohan in #2604
Inverters :zap
Hardware 🤖
Housekeeping 🧹
- Improvement/Syslog 📜 pre-connectivity log backlog; task name as app name by @nagyrobi in #2585
- Improvement: Reduce header dependencies by moving #includes about, also save flash by @jonny5532 in #2609
- GitHub: Bump marocchino/sticky-pull-request-comment from 2 to 3 by @dependabot[bot] in #2595
- GitHub: Bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #2596
- GitHub: Remove extraneous + signs from measure action by @jonny5532 in #2610
- GitHub: Improve binary size tracking v3 by @ngehrsitz in #2594
- GitHub: Make firmware size report clearer, add links by @jonny5532 in #2606
New Contributors
- @ngehrsitz made their first contribution in #2561
- @BatteryPlug made their first contribution in #2622
Full Changelog: v11.0.0...v11.1.0
v11.0.0
What's Changed 📦
Version 11 is a new major release of the Battery-Emulator, with many wireless cybersecurity enhancements and MQTT changes that might require attention when updating. Please familiarize yourself with the release notes before OTA updating to this version.
-
This release brings us several cybersecurity improvements. From now on, when the Wi-Fi access point (AP) is running with the factory-default password (123456789), and no client connects to it, it is automatically disabled after 5 minutes (raising a corresponding event). If a custom AP password has been set, behavior is unchanged and the AP stays enabled indefinitely. Limiting the default-password AP to a short provisioning window mitigates the attack vector while keeping first-time setup and recovery access fully functional. The log window had Wi-Fi/AP passwords printed in cleartext, in the settings UI the Wi-Fi/AP/MQTT/HTTP-auth password fields rendered the stored value into their HTML value attribute making it possible for malicious actors to read them. This has changed so that these fields remain empty, and when submitting the form without any of these filled, they will not be changed.
-
Long-pressing the board BOOT/FLA button at runtime brings three new features useful for on-site work and troubleshooting: long-press 5 to 15s starts the AP if it's not on (perfect to restart the provisioning window introduced above); 15s to 30s will wipe the Wi-Fi client settings and reboot with AP on (useful when local network changes, or runs in trouble); long-press more than 30s will perform a full factory reset and reboot (a physical, UI-independent recovery of last resort). All actions are decided on button release, based on how long it was held. Color led blinks white at various speeeds to confirm the selected stage (slow-, mid-, and fast blink respectively).
-
MQTT possible breaking change
⚠️ From now on Battery Emulator always sets a hostname, which defaults tobattery-emulator-xxxx(the last two bytes of its MAC address lowercase). This value is used to identify the device on all the supported platforms: this will be the SSID of the AP, the broadcasted mDNS name, the identifier in the DHCP lease request, the value for "MQTT topic name", "Prefix for MQTT object ID," "HA device name", "HA device ID", and the host identifier in the syslog messages. Consequently, the "Customized MQTT topics" checkbox and its four dependent fields ("MQTT topic name", "Prefix for MQTT object ID," "HA device name", "HA device ID"), the "Access point name:" field were removed from the web interface. This counts as a breaking change: if you rely on MQTT for your automations related to Battery Emulator, prepare for the potential adjustments (tip: if you used the same value for the four custom MQTT topics, you'll likely get away easy by setting that as Hostname from now on). This not only makes long term usage more straightforward especially when multiple emulators are in use, but also significantly reduced flash space requirements. -
Display support (128x64 OLED) has been removed for "LilyGo T‐CAN485". This breaking change also frees up the GPIOs - but please don't be disappointed by this - support for ESPNow v2 is in the works, which has many more advantages for display usage: a plethora of full-color display types will be able to show data even from multiple nearby emulators, much more data (including individual cell voltages) in a customizable interactive form, in a safer manner without physical connection.
-
A new logging backend has been added: syslog. This self-contained solution introduces no new libraries, no new sink patterns: reuses the same engine that was already in for USB / web / SD logging thus it was very cheap to add. The big benefit here is that events happening in Battery Emulator can be logged independently from the system (even on a NAS which supports log receiving for free) making troubleshooting easier on long term.
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 🔋
- BYD vehicle: Add U014100 description by @dalathegreat in #2538
- Volkswagen MEB: Open contactors if inverter demands so by @dalathegreat in #2533
- VCU: Always assume inverter is alive to avoid fault mode by @dalathegreat in #2546
- Double/Triple battery: Add hysteresis to out of sync voltage event by @dalathegreat in #2536
- CMFA platform: Add support for triple battery operation by @dalathegreat in #2542
- Tesla S/3/X/Y: Full CAN alert-matrix (DTC) decoding by @hpetersen in #2558
- Tesla S/3/X/Y: Reduce USB debugging string length, comment out unused code to save flash by @dalathegreat in #2574
Hardware 🤖
- Feature: Add CAN bus error detection and handling, and allow NativeCAN bus-off recovery by @jonny5532 in #2568
- Safety: Wait for Battery3 current to drop to 0A to pause/reset checks by @jonny5532 in #2553
- Safety: Make Equipment Stop STOP/RESUME explicit by @jonny5532 in #2554
- Safety: Skip BMS reset incase Equipment Stop is active by @dalathegreat in #2549
- Safety: Do a graceful restart for reboot/MQTT/OTA, keeping CAN active to avoid any welded contactors by @jonny5532 in #2551
Connectivity
- Improvement: MQTT and AP UI reductions, settings page UI by @nagyrobi in #2562
- Feature: long-press board BOOT button to start AP or factory reset by @nagyrobi in #2541
- Cybersecurity: Don't expose passwords in web log and settings page by @nagyrobi in #2534
- Cybersecurity: Provisioning window for AP with default pass by @nagyrobi in #2566
Housekeeping 🧹
- Feature: Add general logging to a syslog server by @nagyrobi in #2555
- Update short SHA length in firmware rename step by @nagyrobi in #2548
- Improvement: Flash reduction by @dalathegreat in #2550
- Improvement: Guard display against SMALL_FLASH_DEVICE to save flash usage by @nagyrobi in #2565
- Improvement: Union datalayer entries, rejig constructors, to save Flash+RAM by @jonny5532 in #2570
- Improvement: Remove unnecessary initializations for extended_datalayer by @dalathegreat in #2572
- Github: Make compile action use more caches for faster builds by @jonny5532 in #2559
- GitHub: Fix PR measure action to use correct base commit by @jonny5532 in #2569
- Github: New GitHub action to measure and report firmware size of PRs by @jonny5532 in #2547
New Contributors
- @hpetersen made their first contribution in #2558
Full Changelog: v10.13.0...v11.0.0
v10.13.0
What's Changed 📦
This release contains several MQTT improvements. MQTT users especially should check out each PR listed below for more information. In particular for cell voltages display precision to be 3 in HA, BE device instance needs to be deleted from HA MQTT integration, and then BE needs to be rebooted, in order to be re-discovered with the new entity settings
This release also adds DTC reading and clearing for BYD Vehicles, which will help develop the integration further, and aid troubleshooting misbehaving BYD packs.
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 v10 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 🔋
- Nissan LEAF: Avoid false temperature warning events on AZE0 by @dalathegreat in #2500
- BYD Vehicle: Live DTC Read & Erase by @demon1300 in #2519 & #2485
- BMW i3: Significant protocol improvements, battery now estimates SOC% more like it would in vehicle. by @mbuhansen in #2506
- BMW i3: DTC JSON list added by @dalathegreat in #2529
- Volkswagen MEB: Avoid high temperature diff on reboot by @dalathegreat in #2530
- Zoe Gen2: Filter out incorrect startup readings by @dalathegreat in #2531
Hardware 🤖
- Fix BEcom -> BECom in release_assets by @jonny5532 in #2498
- Waveshare: Add secondary battery contactor pin by @dalathegreat in #2514
- T2CAN: CAN-FD bugfix; Fix autodetection to use correct TCDO value, validation by @jonny5532 in #2522
Connectivity
- MQTT: Fixed an issue where
SET_LIMITSdischarge limit compared against wrong (charge) setpoint by @nagyrobi in #2509 - MQTT: Set suggested display precision to 3 and proper icon for cell voltages in HA discovery by @nagyrobi in #2510
- MQTT: Add
state_classassignment forbalancing_active_cellsautodiscovery sensor by @nagyrobi in #2508 - MQTT: Feature; Complete MDI icon coverage for HA autodiscovery entities by @nagyrobi in #2516
Housekeeping 🧹
- DTC feature: JSON files documentation by @malec1984 in #2504
- Bump actions/cache from 5 to 6 by @dependabot[bot] in #2515
- Actions improvement: rename firmware.bin inside ZIP with PR# and short SHA for clarity by @nagyrobi in #2523
New Contributors
Full Changelog: v10.12.0...v10.13.0
v10.12.0
What's Changed 📦
This release adds support for running 2x CAN-FD interfaces at same time. This enabled triple CAN support on several hardware boards. Notably the Stark CMR can now be retrofitted with a MCP2518FD chip, to make it a 3-CAN board (and 2xFD interfaces at same time!) 🔋 🔋 🔋
This release also adds the first official stable version for the BEcom hardware 🤖
We also added a notification system inside the webserver, where users will be notified once a new version of Battery-Emulator is available.

There is also a new checkbox for extending the CAN inverter communication timeout. Some inverters (Like Sungrow and offgrid Deye), need a longer than 60 second timeout. If you encounter CAN_INVERTER_MISSING and you are sure communication works, you can now enable the new "Allow longer CAN timeout" option, which triples the timeout period
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 v10 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 🔋
- Tesla S/3/X/Y: Bugfix; Fix initialization for double battery by @dalathegreat in #2471
- Kia EGMP: Allow float charging between 99-100% by @dalathegreat in #2432
- Bugfix: Interconnect contactor battery 3 was not working on triple battery setups by @dalathegreat in #2493
- Safety
⚠️ We now wait with engaging GPIO controlled contactors until battery communication is established by @dalathegreat in #2494 - BMW SBOX: Speed up CAN sending from 20ms to 10ms by @dalathegreat in #2495
Inverters ⚡
- All inverters: Added "Long inverter CAN timeout" config option to webserver by @dalathegreat in #2466
- Safety
⚠️ Added 20 mV hysteresis to per-cell overvoltage charge cut to avoid inverters constantly charge/stop/charge/stop cycling by @demon1300 in #2486 - Solax: Fix inverter contactor webserver save workaround by @frenetic1 in #2477
- SMA: Startup grace period for SMA inverter CAN watchdog by @lenvm in #2483
Hardware 🤖
- T-2CAN: Add-on MCP2518FD for T-2CAN board, freq autodetection by @jonny5532 in #2469
- Stark CMR: Add-on MCP2518FD for Stark board by @jonny5532 in #2492
- All HW: Add-on CAN Crystal frequency now autodetected, configuration removed from webserver by @jonny5532 in #2469
- BEcom: Add BEcom images to release, update python version to latest by @dalathegreat in #2478
- Add SMA contactor input for Waveshare by @dalathegreat in #2496
Housekeeping 🧹
- Feature: Add notification in Webserver when new BE release is available by @demon1300 in #2481
- OTA: Pause battery usage before OTA restarting to avoid contactor wear by @jonny5532 in #2489
- Cybersecurity: Improve Webserver interface logout handling by @DeadmaroZ-TLOTL in #2480
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #2490
- Unit test: ensure compatibility with AppleClang/macOS by @lenvm in #2482
Full Changelog: v10.11.0...v10.12.0
v10.11.0
What's Changed 📦
This release improves cybersecurity, by adding the possibility to lock the webserver behind an username/paassword. It also adds new features such as contactor control for BYD batteries, support for double-Tesla battery setups, and much more. It also starts the Diagnostic Trouble Code (DTC) refactoring project, which aims to offload DTC descriptions to the repository, instead of consuming precious flash storage space. This means the old flash limited ESP32 boards like LilyGo T-CAN485 will now benefit from the previously featuregated DTC descriptions in integrations such as BMW iX / PHEV. DTC information is read from the internet instead of from flash. Massive thanks to @malec1984 & @jonny5532 for the work!
The new option to enable username/password for the webserver
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 v10 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 🔋
- Added support for Double Tesla S/3/X/Y Battery + Cellmonitor fix by @nizmot in #2378
- Tesla S/3/X/Y: Hide NOT_ACTIVE faults on Tesla HTML by @jonny5532 in #2410
- Relion LV: Add contactor control via CAN by @dalathegreat in #2361
- Relion LV: Bugfix, handle battery3 contactor closing properly by @dalathegreat in #2413
- MG5/ZS/MarvelR general stability fixes by @jonny5532 in #2417
- BYD Batteries: Added full contactor control via CAN/Webserver (previosly we could only close contactors and never open them) by @demon1300 in #2453
- BYD Batteries: Fixed crash that occured when double battery was enabled by @demon1300 in #2427
- BYD Batteries: Feature: Extend BYD auto-SOC-calibration and diagnostics to second battery by @demon1300 in #2431
- Ford: Improve scaling of values in more battery info page by @dalathegreat in #2418
- Ford: Add missing enumeration for rebalance status by @dalathegreat in #2452
- Tesla Legacy: Add more BMS reset commands by @dalathegreat in #2425
- Feature: Add DTC clearing for many battteries (Nissan/Renault/etc.) by @dalathegreat in #2443
- BMW PHEV: Contactor control, balancing, isolation & DTCs implemented by @wjcloudy in #2462
Inverters ⚡
- Solax: Multiple tesla batteries now possible to run with new contactor control dropdown option by @frenetic1 in #2211
- Kostal: Fixed an issue where battery->update_values() was called too often by @mbuhansen in #2463
Hardware 🤖
- Waveshare: Add GPIO 1/2 configurable option for status LED or I2C display by @demon1300 in #2412
- Waveshare: Add MEB precharge pins to HAL by @dalathegreat in #2421
- BECom: Add second MCP2518 (CAN-FD2) interface option by @jonny5532 in #2068
Housekeeping 🧹
- Cybersecurity: Added password protection for web interface, by @DeadmaroZ-TLOTL in #2449
- Library 📚 Update ESP32 to v3.3.9 by @dalathegreat in #2440
- Bugfix: CANFD restart not working by @malec1984 in #2423
- DTC refactoring:
- Enhancement: DTC description files by @malec1984 in #2437
- Feature: ISO-TP library by @malec1984 in #2451
- DTC: Add initial DTC JSONs (Ford & Volvo SPA & Nissan LEAF) by @dalathegreat in #2424
- Enhancement: DTC descriptions based on JSON file by @malec1984 in #2430
- Improvement: Reduce number of duplicate builds by @dalathegreat in #2459
- Feature: Add component detection events to make system easier to troubleshoot by @dalathegreat in #2455
New Contributors
- @DeadmaroZ-TLOTL made their first contribution in #2449
Full Changelog: v10.10.1...v10.11.0
v10.10.1
What's Changed 📦
NOTE: Same release note as v10.10.1, this release just fixes the broken More Battery Info page
This release adds support for Dyness Tower batteries, adds support for automatic SOC calibration for BYD batteries, and turbocharges the Ford Mustang MachE integration with More Battery Info+DTC clear. The release also contains many improvements, see the full release notes 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 v10 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 🔋
- Added support for Dyness Tower 🔋 by @tekampe-oss in #2120
- BYD Vehicle: Feature: Automatic SOC Calibration by @demon1300 in #2241
- BYD Vehicle: Add support for 172S BYD batteries by @dalathegreat in #2374
- Ford MachE: Add More Battery Info page + DTC reset button by @dalathegreat in #2391
- MEB: Improve MEB code readability by @malec1984 in #2353 & #2388
- CMFA: Improve current resolution, tidy FP math by @jonny5532 in #2358
- BMW i3: Contactor close change in logic by @mbuhansen in #2356
- Zoe Gen1: Improve current resolution, tidy FP math by @Dibblah1 in #2385
- Tesla S/3/X/Y: Don't show lines with "NOT_ACTIVE" in More Battery Info by @nizmot in #2368
Inverters ⚡
- Foxess: Reduce flash usage and add reverse engineering comments by @dalathegreat in #2402
- Solax: Add MAC-derived battery identities, which improves Solax Cloud visibility by @Dibblah1 in #2383
Connectivity 🛜
- MQTT: Improve balancing visualization via MQTT by @dalathegreat in #2363
Hardware 🤖
- Waveshare: Add support for GPIO contactor control by @dalathegreat in #2362
- Waveshare: Make sure included in build release directory by @dalathegreat in #2351
- Waveshare: Added Waveshare hardware identifier to main landing page by @demon1300 in #2379
Housekeeping 🧹
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #2394
- Bugfix: Logging improvements by @dalathegreat in #2373
- Improvement: Add hysteresis to low heap event by @dalathegreat in #2404
New Contributors
- @Dibblah1 made their first contribution in #2385
- @nizmot made their first contribution in #2368
- @tekampe-oss made their first contribution in #2120
Full Changelog: v10.9.0...v10.10.0