🚨 Partition Layout Change
Coming from firmware version 2024.06.03 or older *1), you cannot upgrade to this release (or any future release) by performing an over-the-air (OTA) update using the web interface! Read and follow the upgrade instructions, where additional information is available as well.
If you upgraded to version 2024.08.18 or newer already *2), you should be good to perform an OTA update using the web interface (unless you are using the generic_esp32_4mb_no_ota
firmware variant).
*1) Technically: If you are still using the "old" partition layout where the sketch size is only 1,920 kB. See Info -> System
in the web UI to know your current sketch size.
*2) Only when upgraded using the respective .factory.bin
image over a wired connection to the ESP32, such that the partition layout was actually updated alongside the firmware.
Upstream
This release includes upstream OpenDTU v24.11.7
.
⚡ Breaking Changes
- BREAKING CHANGE: remove default scaling/compensation for unused inputs
- BREAKING CHANGE: huawei grid charger with MCP2515 requires IRQ pin
🚀 Features
- Support for Huawei AC charger using the CAN Transceiver on OpenDTU Fusion CAN/Iso shield.
- Feature: huawei grid charger: support serial CAN controller (Conflicts with CAN-based battery providers!)
- Support for HMS-1600/-1800/-2000 inverters with firmware 01.01.12
- Mitigate overscaling issues when used with "solar-passthrough batteries".
- Feature: show hint if device profile missing or not selected
- Feature: webapp: show hardware UART allocations
- Feature: hide inverter totals if no inverters configured
- Feature: webapp: warn about small lower power limits
- Feature: auto-detect SoC precision for MQTT Battery provider
- Feature: include MPPT power in debug log
- Feature: sub-second DTU poll interval resolution
🐛 Fixes
- Fix: wait for inverter stats before doing full solar-passthrough
- Fix: use battery when in full solar-passthrough
- Fix: need to skip BOM also when migrating config
- Fix: rename solar-passthrough losses to conduction losses
- Fix: DPL: proactively set known limit on inverters
- Fix: Huawei AC charger sends signed values
- Fix: webapp: DPL: config hint only for governed inverters
- Fix: wrong usage of 'isSunsetAvailable'
- Prevent solar powered inverters from getting stuck at low limits
- Setups without a solarcharger interface configured will not try to do full-solar-passthrough
- Fix: huawei grid charger: prevent deadlock on mutex
🌎 Web Application
- webapp: avoid undefined serial for InputSerial
- webapp: DPL: clean up obsolete language tokens
- webapp: DPL: use new terminology "governed" inverters
- webapp: show OpenDTU-OnBattery-specific config version
- webapp: improve styling of hints on home view
- webapp: allow to reduce MQTT publish interval down to 1 second
- webapp: add "-OnBattery" in "NotReady" language token
- webapp: fix warning message about pin mapping profile name length
- webapp: define pin mapping interface for Huawei and PowerMeter
- webapp: add proxy for /huaweilivedata location
- webapp: show precise data age for inverters
🛠 Under the hood
- DPL: beautify log by considering plural for amount of inverters
- DPL: optimize verbose logging output
- config.json: remove skipping BOM a second time
- introduce and use ConfigurationClass::migrateOnBattery()
- DPL: cache load-corrected voltage
- github actions: switch to ubuntu-24.04
- power meter serial SDM: whitespace/style cleanup
- delete .DS_Store
- match file "COPYING" to OpenDTU-OnBattery
- huawei grid charger: split controller and CAN driver
- huawei grid charger: make MCP2515 driver private to controller
- huawei grid charger: whitespace cleanup
- huawei grid charger: clean up #defines
- huawei grid charger: web API: remove unreachable code
- huawei grid charger: start HW interface abstraction
- huawei grid charger: prepare to accept tx and rx pin config
- huawei grid charger: de-duplicate config (de)serialization
- huawei grid charger: merge common code in base class
- huawei grid charger: avoid reboot on settings change
- huawei grid charger: revise message outputs
- huawei grid charger: TWAI: asynchronously poll for messages
- huawei grid charger: remove unused parameter
- huawei grid charger: use DataPointContainer
- huawei grid charger: do not include FreeRTOS headers
- huawei grid charger: clean up main's setup() function
- huawei grid charger: rename setting to "TWAI" rather than "VP230"
- huawei grid charger: simplify task name in web UI
- huawei grid charger: always allow setting offline settings
- generalize feature "VE.Direct" to "Solar Charger" (#1442)