Releases: hoylabs/OpenDTU-OnBattery
2024.11.20
🚨 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
.
🚀 Features
- Extend Dynamic Power Limiter (DPL) to support multiple inverters
- Support JBD BMS as battery provider
- Extend support for VE.Direct charge controllers
- Implement support for language packs (from upstream)
- DPL: support overscaling on all inverters (#1286)
- add SoC & voltage thresholds for battery current limit
- Refactor config management interface
- Validate JSON before uploading
- Added device info for HMS-700
🐛 Fixes
- protect api/powerlimiter/status endpoint
- skip BOM in JSON files (pin_mapping and config)
- SBS Unipower battery discharge current handling
- Take DST into account when recalculating the sunrise sunset time
🌎 Web Application
- Added global reboot wait screen
- add gap between inverter selectors
- add JDB BMS issue texts
- adjust look of tables in accordions to live view cards
- align table headers with card headers
- always scroll up when navigating to another view
- apply card-table class to info view cards
- avoid inline style for inverter channel info value
- avoid inline style in inverter channel info card
- avoid spurious DOM elements, avoid v-show, use v-if
- beautify radio statistics reset button
- consistently use no colon in form labels
- declare emitted event in FormFooter component
- device manager: optimize cards for tab nav
- do not use div with v-if but template elements
- equalize style of cards with tables in live view
- fix AC charger admin view
- fix inverter "add" and "save order" button positions
- fix inverter selection button breaking
- fix line break for reload button
- fixup battery total cards
- Fix: WaitRetstartView showed basic auth dialog
- generalize battery serial interface settings
- inverter advanced tab needs space at the top
- last table row shall have no bottom border
- MQTT: no login with cert if TLS disabled
- MQTT: use v-if in favor of v-show
- optimize body bottom padding and length
- optimize look of firmware update cards
- optimize look of login page
- optimize placement of device profile doc buttons
- optimize spacing around power meter test buttons
- optimize spacing on bottom of cards
- prettify battery settings UI
- properly space alert with hint for hostname
- [remove table's bottom margin](https://github.com/hoylabs/O...
2024.10.22
🚨 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.
🚀 Features
- Feature: Implement W5500 support
- Feature: Add support for HERF 1 channel inverters
- Feature: ESP heap and temperature details on MQTT and HASS (#1242)
- Feature: DPL: Honor battery-provided discharge power limit (#1198)
- Feature: extend battery discharge limit support (#1245)
- Feature: Support for SBS Unipower batteries (#1199)
- Feature: Inverter radio statistics (rx/tx statistics)
- Feature: Allow reset of radio statistics via mqtt
- Feature: Allow reset of radio statistics via WebApp
- Feature: Publish Radio statistics to home assistant
- Feature: Publish YieldTotal, YieldDay and Power of all inverters to Home Assistant
- Feature: rxen/txen support for RS485 transceiver for SDM power meter (#1269)
- Feature: parse additional Pylontech CAN protocol fields (#1213)
- Feature: Add syslog logger (#1267)
- Feature: Show RSSI of last received packet in radio stats
- Feature: show task details in system info view
- feature: Add support for native pytes CAN protocol (#1196)
- Feature: show "Smart Battery Sense" temperature in web UI (#1292)
🐛 Fixes
- Fix: HTTP power meter custom port (#1333)
- Fix: generic_esp32_8mb firmware did not boot
- Fix: don't republish MQTT powermeter data to MQTT (#1250)
- Fix: WebApp was not reloaded after firmware update
- Fix: Wrong topic in home assistant auto discovery for maxalloc and minfree
- Fix: Saving DTU config values just returned "Values are missing"
- Fix: Unable to set CMT transmit power in WebApp
- Fix: Restart was triggered before all website data was sent
- Fix: typo in HASS auto-discovery metadata for heap stats (#1274)
- Fix: cs_ena_posttrans calculation
- Fix: Only count RF RX packets when packets where sent
- Fix: avoid deprecated setAuthentication() to fix memory exhaustion
- Fix: force websocket clients to authenticate
- Fix: prevent unauthorized access to OnBattery websockets
- Fix: Add state_class to several Home Assistant sensors
- Fix: "Equal brightness" in LED settings does not work correctly
- Fix: default value for discharge current limit
- Fix: typo in Battery.cpp regarding discharge current limit
- Fix: Correct output of wifi disconnect reason code
- Fix: conversion from Kelvin to Centigrade (SmartBatterySense)
- Fix: German translation for Victron MPPT load output
- Fix: comment in pio-scripts/patch_apply.py
🌎 Web Application
- webapp: Update dependencies
- webapp: update dependencies
- webapp: Update dependencies
- webapp: Upgrade tsconfig node18 to node22
- webapp: Parse version string event if update search is not allowed
- webapp documentation moved as well
- webapp: use shell=True in autocompile script
- webapp: Update dependencies
- webapp: Fix html error in eventlog
- webapp: autocompile script: use portable subprocess
- webapp: autocompile script needs to run yarn within webapp dir
- webapp: switch to Node.js v22
- webapp: autocompile script: changes package.json triggers build
- webapp: Update dependencies
- webapp: Fix data type for all range inputs
- webapp: Update dependencies
- webapp: Apply auto format
- webapp: Update dependencies
- webapp: Update dependencies
- webapp: optimize syslog settings
- [webapp: Update dependencies](https://github.com/hoylabs/OpenDTU-OnBattery/comm...
2024.09.11
🚨 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.
Maintenance Release
This release focuses on bug fixes, many of which are regression fixes. If you are affected by any of the issues fixed in this release, please upgrade at your earliest convenience.
🐛 Fixes
- Fix: Increase Huawei CAN task stack size (fix a bootloop when using the Huawei AC charger)
- Fix: restart TCP connection if HTTP server sends Connection:close (fix HTTPS+JSON power meter talking to Shelly device prompting for authentication)
- Fix: initialize HTTP(S)+JSON power meter values
- Fix: SMA HomeManager PowerMeter must announce new values (fixes SMA HomeManager power meter not working at all)
- Fix: update mqtt subscriptions when topic changed (#1156)
- Fix: update info: compare to respective branch (should now only show "update available" if that is indeed the case)
- Fix: VE.Direct data is invalid if no controller has valid data
- Fix: Pylontech/Pytes CAN driver: user interrupts at level 2 (fix a bootloop when enabling the Pylontech battery interface)
- Fix: reasonable full solar-passthrough default values
- Fix: DPL settings: do not reset solar_passthrough_enabled
- Fix: Allow higher-resolution SoC in live view header (#1197) (relevant for Victron SmartShunt users only)
- Fix: sanitize battery manufacturer name string (#1235) (probably only relevant for users of DEYE batteries)
- Fix: typo in german web app locale
🚀 Features
- Feature: SPIPortManager allows simultaneous use of CMT2300 and Huawei charger
- Feature: support 'use battery at night' without VE.Direct
- Feature: HttpGetter: support MD5 digest authentication
- Feature: HttpGetter: cache digest challenge
🌎 Web Application
- adjust update badge color: having an update available is no danger
- webapp "About" view: link to opendtu-onbattery.net
🛠 Under the hood
2024.08.18
🚨 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.
*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.
⚡ Breaking Changes
- BREAKING CHANGE: repartition: double sketch size, see Partition Layout Change above
- BREAKING CHANGE: allow multiple OpenDTU-OnBattery instances at same HASS
🚀 Features
- Feature: Show MCU temperature in system info
- Feature: Add option to clear eventlog at midnight
- Feature: Set/obtain DPL upper power limit via MQTT
- Feature: Set/obtain DPL target power consumption via MQTT
- Feature: Implement DPL 'overscaling' to compensate shading (#956)
- Feature: support Tibber bridge as power meter interface
- Feature: decode more OBIS values in SML power meters
- Feature: make power meter polling intervals configurable
- Feature: HTTP+SML power meter: poll asynchronously
- Feature: HTTP+JSON power meter: poll asynchronously
- Feature: SDM power meter: poll asynchronously
- Feature: support JSON payload in MQTT power meter
- Feature: SDM power meter: switch to software serial
- Feature: Serial SML power meter: poll asynchronously
- Feature: SML power meter: handle checksum error
- Feature: SML power meters: reset SML decoder
- Feature: Allow custom MQTT Client ID
- Feature: Add support for HMS-800-2T-LV inverters
- Feature: add support for Pytes batteries using CAN (#1088)
- Feature: expose 'full solar passsthrough active' via MQTT (#1136)
- Feature: show battery voltage, current, and power in live view totals (#1131)
- Feature: support JSON payload in MQTT battery provider
- Feature: add unit for MQTT battery voltage (#1143)
🐛 Fixes
- Fix #2000: MQTT subscriptions where not updated if MQTT base was changed
- Fix: Apply inverter settings only once and not for each channel
- Fix: Wrong divider in gridprofile RVHF
- Fix: optimize margins in live view
- Fix: SDM power meter: free HW serial port
- Fix: Remove not required semicolon
- Fix: explicitly disconnect prior connecting to wifi
- Fix: Improve overscaling for shaded inputs (#1089)
- Fix: handle numeric values disguised as strings in JSON
- Fix: Victron MPPT: be happy with at least one that delivers valid data (#1118)
- Fix: initialize MQTT power meter values to zero
- Fix: use mutex when writing MQTT power meter value
- Fix: inverter power limits precision
- Fix: Wifi reconnect issue introduced with #2117 and discussed in #2185 was fixed
- Fix: add auth check on battery, huawei and powermeter API endpoints (#1155)
- Fix: Improve DPL nighttime discharging (#1126)
- Fix: Typos de.json translation
🛠 Under the hood
Upstream Tags
- Merge upstream tag 'v24.6.10' into development
- Merge upstream tag 'v24.6.29' into development
- Merge upstream tag 'v24.8.1' into development
- Merge upstream tag 'v24.8.5' into development
Web Application
- webapp: update dependencies
- webapp: update dependencies
- webapp: Update dependencies
- webapp: update dependencies
- webapp: update dependencies
- webapp: update dependencies
- webapp: disable OTA firmware dialog for unsupported devices
- webapp: Locale update for "screensaver"
- webapp: Remove duplicated code
- webapp: Remove no more required locale
- webapp: Check if temperature is set
- webapp: Add Autoformatter
- webapp: Apply auto formatter
- webapp: apply formatter on downstream sources
- Add proper formatting for flashsize output
- Use correct units in hardware info
- [power meter web UI: remove J...
2024.06.03
🚀 Features
- Feature: show ESP32 flash memory size in system info
- feature: JK BMS: HA auto-discovery for battery temperatures
- Feature: SmartShunt: process midpoint voltage and deviation
- Feature: show BMS FW and HW version (JK BMS, SmartShunt)
- Feature: add support for a third Victron MPPT
🐛 Fixes
- fix: project's name is 'OpenDTU-OnBattery' (capital 'O')
- fix: Victron MPPT HA auto-discovery: fix unit of temperatures
- Fix: Huawei PSU: enforce BatterySoC Limit < 100 in UI (#992)
- Fix: properly format Victron MPPT firmware version
- fix: make SDM power meter use serial port manager
🛠 Under the hood
- power meter web UI: add example for array access + translations
- DPL web UI: add hint to setting "inverter behind power meter"
- README: update documentation links
- docs: device profile docs fully moved to wiki
- docs: do not tell users to custom-build because of pins assignments
- docs: mention OpenDTU Fusion board as basic hardware
- docs: tell people to buy ESP32 with 8 MB of flash
- docs: mention ADUM1201 to talk to Victron MPPTs
- docs: explain usage of MCP2515 module
- VE.Direct: prefer strncpy over strcpy
- check FW bin file size when creating factory.bin
- refactor serial port manager: hand out UARTs FCFS
- Prepare Release 2024.06.03 (#1024)
2024.05.07
🐛 Fixes
- Fix #1960: Prometheus API return wrong information in function addPanelInfo
- Fix: restore JSON array access for HTTP power meter
- Fix: restore JSON array access for HTTP power meter
🛠 Under the hood
- Prevent compiling the whole project on each commit.
- Use fixed versions for all dependencies
- Upgrade ESP Async WebServer from 2.9.3 to 2.9.4 and set ASYNC_TCP_QUEUE_SIZE to 128 for different Async TCP library
- webapp: update dependencies
- Upgrade build action to support node 20
- Upgrade olikraus/U8g2 from 2.35.17 to 2.35.19
- Merge branch 'pr1920' into dev
- webapp: update dependencies
- Upgrade ESP Async WebServer from 2.9.4 to 2.9.5
- webapp: add app.js.gz
- workflow: ignore v** tags
- Merge upstream tag 'v24.5.6' into development
- embrace upstream __compiled_constants.h approach
- Prepare Release 2024.05.07 (merge development into master)
2024.05.06
2024.05.03
⚠️ Only for ESP32-S3 ⚠️
Unfortunately, due to an unknown problem, the binaries for the generic_esp32
and generic
enviroments are unusable and have been removed from this release. See #950. The next release will address this issue such that those variants are available again.
Do not attempt to build the firmware yourself for those environments. The resulting firmware blob will be too large and will fail to start or OTA-update.
Sorry for the inconvenience.
🚀 Features
- Feature: BMS initiated emergency charging
- Feature: add unique prefix to VE.Direct messages
- Feature: add support for VE.Direct hex messages
- Feature: use VE.Direct "network total DC power"
- Feature: Migrated ArduinoJson 6 to 7
- Feature: Check for out of memory situations when sending json responses
- Feature: Huawei: add SoC stop threshold and verbose logging switch
- Feature: DPL: introduce base load setting
- Feature: DPL: support setups without power meter
- Feature: HTTP power meter: support mW/kW as units
- Feature: HTTP power meter: support changing sign
- Feature: restart unresponsive inverter
- Feature: support for Huawei target power consumption
- Feature: battery interface: use HW serial 0 on ESP32-C3 or S3 (#933)
- Feature: Publish Huawei AC charger mode via MQTT (#876)
🐛 Fixes
- fix: VE.Direct MPPT data not always updated in websocket
- Fix: Change default NTP server
- Fix: Re-Request grid profile parameters if received data are invalid / to short
- Fix include for TimeoutHelper
- Fix typo in German locale (#831)
- Fix: properly handle fragmented VE.Direct messages
- Fix: Setting DTU options was only possible once without reboot
- Fix: Too small event_queue_size in AsyncTCP lead to wdt reset
- Fix: DPL: use correct channel type to get inverter efficiency
- Fix: show AC input power of Huawei AC charger in live view
- Fix: If unauthenticaed, the redirect to login page did not work
- fix hysteresis hint texts
- Fix: JK BMS: BMS name is second part of product ID
- Fix: DPL mode 2 for solar-powered inverters
- Fix: Return 404 (and nothing else) if file not found
- Fix: Device Manager shows 404 if no pin_mapping.json was available
- Fix: VE.Direct: take the load current into account
🛠 Under the hood
- PowerLimiter.cpp: simplification and minor correction of logic table comments
- better alignment inverter, issue 360
- webapp: update dependencies
- Added github workflow to do some repository cleanup
- webapp: add app.js.gz
- Move source files for TimeoutHelper to correct directories
- Move source files for ThreadSafeQueue to correct directories
- Save flash: Move WebApi json parsing to separate method to prevent a lot of redundant code
- Update espressif32 from 6.5.0 to 6.6.0
- VE.Direct: simplify access to data
- VE.Direct: use float rather than double
- VE.Direct MQTT: simplify code
- VE.Direct: make state machine timeout robust against overflow
- Merge remote-tracking branch 'tbnobody/OpenDTU/master' into merge-v24.3.31
- polish VE.Direct HEX support
- Merge pull request #836 from helgeerbe/merge-v24.3.31
- Upgrade ESP Async WebServer from 2.8.1 to 2.9.0
- Move parsing of serial from web request to separate method
- VE.Direct: process more values and refactor variable names
- adjust VE.Direct MPPT yield resulotion (#859)
- PowerMeter admin: URL examples to the top and hidden if disabled
- remove remaining usage of F() macro
- remove usage of F() macro
- Merge branch 'pr1909' into dev
- webapp: update dependencies
- webapp: Fix lint errors
- Remove no more required web server patch
- webapp: add app.js.gz
- power limiter: remove obsolete enum
- DPL: insist on power meter value more recent than inverter stats
- reuse power meter's HTTP config struct
- [HTTP power meter: pre...
2024.03.23
🚀 Features
- Feature: Added description for alarm id 152
- Feature: Add support for HERF inverters
- Feature: DPL: explicit support for solar powered inverters
- Feature: DPL: keep inverter running if solar powered
- Feature: Set powerlimiter thresholds via MQTT
- Feature: Allow enabling and disabling of the version check
- Feature: Support for second Victron MPPT charge controller
- Feature: Refactor/Simplify DPL settings
- Feature: Support SMA HomeManager 2.0 as PowerMeter
- Feature: implement PowerMeter pin config for serial interfaces
- Feature: Set max number of supported Inverters to 10 (upstream default)
🐛 Fixes
- Fix: Prevent hiding text on display if it's too long
- Fix: Exclude hardware part number 124097 from valid part numbers.
- fix: more memory for onBattery live data
- fix: wrong unit in battery HomeAssistent exp_aft
- Fix: Show firmware update tooltip only if newer version available
- Fix: Don't throw exception if git_hash is not set
- Fix: Set all settings to default when deleting an inverters
- Fix: Correct detection of Hoymiles serial if it contains hex characters
- Fix: Updated source comments to also match hex numbers
- fix: preserve SmartShunt energy values precision
- fix: prevent getTotalPower() reading intermediate results
- fix: VE.Direct live data after supporting second MPPT
- Fix: Previously check for HwPartNumber 124097 was implemented wrong
- fix and harden BatteryStats update timestamp handling
- fix VE.Direct live data response size
- fix: HTTP power meter: retrieve multiple JSON paths
🛠 Under the hood
- webapp: update dependencies
- webapp: Fix typo
- webapp: update dependencies
- webapp: update dependencies
- DPL: define IsInverterSolarPowered config switch
- DPL: make "IsInverterSolarPowered" configurable through web app
- DPL: refactor code determining battery charge cycle state
- Merge pull request #733 from helgeerbe/dpl-make-shutdown-partially-optional
- optimize DPL thresholds MQTT integration
- Remove deprecated extension recommendation
- Merge branch 'dev-herf' into dev
- webapp: update dependencies
- implement Battery::needsCharging()
- adjust (new) about texts to OpenDTU-OnBattery
- Upgrade olikraus/U8g2 from 2.35.9 to 2.35.10
- live data: exclude data if respective feature disabled
- disable restarting solar-powered inverters
- live view: do not access undefined data
- webapp: Remove not required cast to string
- Upgrade olikraus/U8g2 from 2.35.10 to 2.35.14
- Upgrade ESP Async WebServer from 2.7.0 to 2.8.1
- webapp: update dependencies
- webapp: add app.js.gz
- clean up defaults.h
- polish support for second VE.Direct MPPT charge controller
- polish SMA HomeManager integration
- add new Victron SmartShunt values to liveView and MQTT (HASS)
- hardware_flash.md: move some info to wiki
- Merge remote-tracking branch 'tbnobody/OpenDTU/master' into v24.3.15
- Merge pull request #778 from helgeerbe/upstream-v24.3.15
- replace VICTRON_MAX_COUNT
- webapp: update dependencies
- SMA Homemanager: fix power value calculation
- webapp: update dependencies
- Upgrade olikraus/U8g2 from 2.35.14 to 2.35.15
- webapp: add app.js.gz
- DPL: improve verbose logging (more variables logged)
- avoid sending null through live data websockets
- do not publish live data for broken MPPT controllers
- implement and use Utils::checkJsonOverflow()
- [DPL settings in web app: split metadata from config](https://github.com/helgeerbe/OpenDTU-...