From 79024cdd23768f63152bc294f04e13cbeb1d9db8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 13 Jun 2025 15:01:51 +0200 Subject: [PATCH 1/6] Bump version v15.0.0.1 --- CHANGELOG.md | 27 ++++++++++------ FIRMWARE.md | 2 +- README.md | 2 +- RELEASENOTES.md | 54 ++++--------------------------- tasmota/include/tasmota_version.h | 2 +- 5 files changed, 27 insertions(+), 60 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c43219400..c7b09324d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,24 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [14.6.0.2] +## [15.0.0.1] +### Added + +### Breaking Changed + +### Changed + +### Fixed + +### Removed + + +## [Released] + +## [15.0.0] 20250613 +- Release Sharon + +## [14.6.0.2] 20250613 ### Added - Allow temporary change of DisplayDimmer (#23406) - Support for LoRaWan Rx1 and Rx2 profiles (#23394) @@ -17,8 +34,6 @@ All notable changes to this project will be documented in this file. - Berry mqtt publish rule processing - Berry `tasmota.is_network_up()` (#23532) -### Breaking Changed - ### Changed - ESP32 Platform from 2025.04.30 to 2025.05.40, Framework (Arduino Core) from v3.1.3.250411 to v3.2.0.250504 and IDF from v5.3.2.250403 to v5.4.1.250501 (#23397) - ESP32 Platform from 2025.05.40 to 2025.05.30, Framework (Arduino Core) from v3.2.0.250504 to v3.1.3.250504 and IDF from v5.4.1.250501 to v5.3.3.250501 (#23404) @@ -40,8 +55,6 @@ All notable changes to this project will be documented in this file. - Autoconf failing when last line has no trailing LF (#23537) - LVGL Tasmota logo splash screen (#23538) -### Removed - ## [14.6.0.1] 20250510 ### Added - Command `JsonPP 0..7` to enable (>0) JSON Pretty Print on user interfaces and set number of indents @@ -54,8 +67,6 @@ All notable changes to this project will be documented in this file. - Support for multi channel AU915-928 LoRaWanBridge by Rob Clark (#23372) - HASPmota `antiburn()` (#23400) -### Breaking Changed - ### Changed - Allow command `WebRefresh` minimum from 1000 to 400 mSec - GPIOViewer from v1.6.2 to v1.6.3 (No functional change) @@ -68,8 +79,6 @@ All notable changes to this project will be documented in this file. - Matter and mDNS can be enabled at the same time (#23373) - Berry `introspect.module()` failed to load modules in files (#23376) -## [Released] - ## [14.6.0] 20250416 - Release Ryan diff --git a/FIRMWARE.md b/FIRMWARE.md index 03e9c6657..194cd2f61 100644 --- a/FIRMWARE.md +++ b/FIRMWARE.md @@ -18,7 +18,7 @@ See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/CHANGELOG ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v14.6.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v15.0.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22) [![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22) diff --git a/README.md b/README.md index d8522d754..f44e2ae0a 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Firmware binaries can be downloaded from http://ota.tasmota.com/tasmota/release/ ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v14.6.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v15.0.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml) [![Build_development](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ddc68ca02..10fc968fb 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -36,9 +36,9 @@ While fallback or downgrading is common practice it was never supported due to S This release will be supported from ESP8266/Arduino library Core version **2.7.8** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. -This release will be supported from ESP32/Arduino library Core version **v3.1.3.250411**. +This release will be supported from ESP32/Arduino library Core version **v3.1.3.250504**. -Support of ESP8266 Core versions before 2.7.8 and ESP32 Core versions before v3.1.3.250411 have been removed. +Support of ESP8266 Core versions before 2.7.8 and ESP32 Core versions before v3.1.3.250504 have been removed. ## Support of TLS @@ -75,12 +75,12 @@ Latest released binaries can be downloaded from - http://ota.tasmota.com/tasmota/release Historical binaries can be downloaded from -- http://ota.tasmota.com/tasmota/release-14.6.0 +- http://ota.tasmota.com/tasmota/release-15.0.0 The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` ### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based -The following binary downloads have been compiled with ESP32/Arduino library core version **v3.1.3.250411**. +The following binary downloads have been compiled with ESP32/Arduino library core version **v3.1.3.250504**. - **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY** - **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash. @@ -104,7 +104,7 @@ Latest released binaries can be downloaded from - https://ota.tasmota.com/tasmota32/release Historical binaries can be downloaded from -- https://ota.tasmota.com/tasmota32/release-14.6.0 +- https://ota.tasmota.com/tasmota32/release-15.0.0 The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin`` @@ -114,55 +114,13 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v14.6.0.2 +## Changelog v15.0.0.1 ### Added -- Provide serial upload port from VSC to PIO [#23436](https://github.com/arendst/Tasmota/issues/23436) -- Command `JsonPP 0..7` to enable (>0) JSON Pretty Print on user interfaces and set number of indents -- Command `JsonPP |backlog ;...` to enable JSON PP only once -- Support for multi channel AU915-928 LoRaWanBridge by Rob Clark [#23372](https://github.com/arendst/Tasmota/issues/23372) -- Support for LoRaWan Rx1 and Rx2 profiles [#23394](https://github.com/arendst/Tasmota/issues/23394) -- Support for AP33772S USB PD Sink Controller as used in CentyLab RotoPD -- Allow temporary change of DisplayDimmer [#23406](https://github.com/arendst/Tasmota/issues/23406) -- WebUI status line for MQTT and TLS, added `FUNC_WEB_STATUS_LEFT` and `FUNC_WEB_STATUS_RIGHT` event [#23354](https://github.com/arendst/Tasmota/issues/23354) -- WebUI heap status [#23356](https://github.com/arendst/Tasmota/issues/23356) -- Optional Wifi strength indicator in WebUI status line [#23352](https://github.com/arendst/Tasmota/issues/23352) -- Wireguard VPN [#23347](https://github.com/arendst/Tasmota/issues/23347) -- Berry mqtt publish rule processing -- Berry support for `sortedmap` [#23441](https://github.com/arendst/Tasmota/issues/23441) -- Berry `introspect.module` option to not cache module entry [#23451](https://github.com/arendst/Tasmota/issues/23451) -- Berry `webserver.remove_route` to revert `webserver.on` [#23452](https://github.com/arendst/Tasmota/issues/23452) -- Berry `compile` and `tasmota.compile` option to compile in local context [#23457](https://github.com/arendst/Tasmota/issues/23457) -- Berry `tasmota.is_network_up()` [#23532](https://github.com/arendst/Tasmota/issues/23532) -- HASPmota `antiburn()` [#23400](https://github.com/arendst/Tasmota/issues/23400) -- HASPmota auto-dimming when no touch [#23425](https://github.com/arendst/Tasmota/issues/23425) ### Breaking Changed ### Changed -- ESP8266 platform update from 2024.09.00 to 2025.05.00 [#23448](https://github.com/arendst/Tasmota/issues/23448) -- ESP32 Platform from 2025.04.30 to 2025.05.30, Framework (Arduino Core) from v3.1.3.250411 to v3.1.3.250504 and IDF from v5.3.2.250403 to v5.3.3.250501 [#23404](https://github.com/arendst/Tasmota/issues/23404) -- ESP32 LVGL library from v9.2.2 to v9.3.0 [#23518](https://github.com/arendst/Tasmota/issues/23518) -- GPIOViewer from v1.6.2 to v1.6.3 (No functional change) -- Allow command `WebRefresh` minimum from 1000 to 400 mSec -- Increase number of supported LoRaWan nodes from 4 to 16 -- Format syslog messages according to RFC5424 adding local log time [#23509](https://github.com/arendst/Tasmota/issues/23509) -- Zigbee improved message when coordinator failed to start [#23525](https://github.com/arendst/Tasmota/issues/23525) -- Berry change number parser for json to reuse same parser as lexer [#23505](https://github.com/arendst/Tasmota/issues/23505) -- Berry increase web hooks from 16 to 32 [#23507](https://github.com/arendst/Tasmota/issues/23507) ### Fixed -- DNS setting with `IPAddress4/5` not persisted [#23426](https://github.com/arendst/Tasmota/issues/23426) -- Autoconf failing when last line has no trailing LF [#23537](https://github.com/arendst/Tasmota/issues/23537) -- NimBLE log_level definition conflict [#23366](https://github.com/arendst/Tasmota/issues/23366) -- Berry `bytes().asstring()` now truncates a string if buffer contains NULL [#23311](https://github.com/arendst/Tasmota/issues/23311) -- Berry string literals containing NULL are truncated [#23312](https://github.com/arendst/Tasmota/issues/23312) -- Berry `display.touch_update` wrongly applies resistive calibration [#23363](https://github.com/arendst/Tasmota/issues/23363) -- Berry `introspect.module()` failed to load modules in files [#23376](https://github.com/arendst/Tasmota/issues/23376) -- Berry avoid json parsing for unmatched commands [#23494](https://github.com/arendst/Tasmota/issues/23494) -- Berry integer and real parser to handle overflows [#23495](https://github.com/arendst/Tasmota/issues/23495) -- Berry potential pointer underflow with `string.endswith` [#23496](https://github.com/arendst/Tasmota/issues/23496) -- LVGL Tasmota logo splash screen [#23538](https://github.com/arendst/Tasmota/issues/23538) -- Matter and mDNS can be enabled at the same time [#23373](https://github.com/arendst/Tasmota/issues/23373) -- Haspmota `haspmota.parse()` page parsing [#23403](https://github.com/arendst/Tasmota/issues/23403) ### Removed diff --git a/tasmota/include/tasmota_version.h b/tasmota/include/tasmota_version.h index 7c89977e9..946b9ece9 100644 --- a/tasmota/include/tasmota_version.h +++ b/tasmota/include/tasmota_version.h @@ -22,6 +22,6 @@ #define TASMOTA_SHA_SHORT // Filled by Github sed -const uint32_t TASMOTA_VERSION = 0x0E060002; // 14.6.0.2 +const uint32_t TASMOTA_VERSION = 0x0F000001; // 15.0.0.1 #endif // _TASMOTA_VERSION_H_ From b5d6e95164756b75cb3f4b9e0b1c7b4e5e71c0dc Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 13 Jun 2025 22:31:12 +0200 Subject: [PATCH 2/6] LVGL regression missing 'lv.ANIM_OFF' and 'lv.ANIM_ON' (#23544) --- CHANGELOG.md | 1 + lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c | 2 ++ lib/libesp32_lvgl/lv_binding_berry/mapping/lv_enum.h | 2 ++ lib/libesp32_lvgl/lv_binding_berry/tools/preprocessor.py | 2 ++ 4 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7b09324d..64c6128a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. ### Changed ### Fixed +- LVGL regression missing `lv.ANIM_OFF` and `lv.ANIM_ON` ### Removed diff --git a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c index c59e115a3..201969a06 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c +++ b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c @@ -237,6 +237,8 @@ const be_const_member_t lv0_constants[] = { { "ALIGN_TOP_MID", be_cconst_int(LV_ALIGN_TOP_MID) }, { "ALIGN_TOP_RIGHT", be_cconst_int(LV_ALIGN_TOP_RIGHT) }, { "ANIM_IMAGE_PART_MAIN", be_cconst_int(LV_ANIM_IMAGE_PART_MAIN) }, + { "ANIM_OFF", be_cconst_int(LV_ANIM_OFF) }, + { "ANIM_ON", be_cconst_int(LV_ANIM_ON) }, { "ANIM_PLAYTIME_INFINITE", be_cconst_int(LV_ANIM_PLAYTIME_INFINITE) }, { "ANIM_REPEAT_INFINITE", be_cconst_int(LV_ANIM_REPEAT_INFINITE) }, { "ARC_MODE_NORMAL", be_cconst_int(LV_ARC_MODE_NORMAL) }, diff --git a/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_enum.h b/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_enum.h index d69266d23..f9aa9be14 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_enum.h +++ b/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_enum.h @@ -183,6 +183,8 @@ LV_LABEL_LONG_DOT=LV_LABEL_LONG_MODE_DOTS LV_LABEL_LONG_SCROLL=LV_LABEL_LONG_MODE_SCROLL LV_LABEL_LONG_SCROLL_CIRCULAR=LV_LABEL_LONG_MODE_SCROLL_CIRCULAR LV_LABEL_LONG_CLIP=LV_LABEL_LONG_MODE_CLIP +LV_ANIM_OFF=LV_ANIM_OFF +LV_ANIM_ON=LV_ANIM_ON // ====================================================================== // Generated from headers diff --git a/lib/libesp32_lvgl/lv_binding_berry/tools/preprocessor.py b/lib/libesp32_lvgl/lv_binding_berry/tools/preprocessor.py index 4db9489c1..a1870147f 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/tools/preprocessor.py +++ b/lib/libesp32_lvgl/lv_binding_berry/tools/preprocessor.py @@ -508,6 +508,8 @@ LV_LABEL_LONG_DOT=LV_LABEL_LONG_MODE_DOTS LV_LABEL_LONG_SCROLL=LV_LABEL_LONG_MODE_SCROLL LV_LABEL_LONG_SCROLL_CIRCULAR=LV_LABEL_LONG_MODE_SCROLL_CIRCULAR LV_LABEL_LONG_CLIP=LV_LABEL_LONG_MODE_CLIP +LV_ANIM_OFF=LV_ANIM_OFF +LV_ANIM_ON=LV_ANIM_ON // ====================================================================== // Generated from headers From 390927c1906049d7dd46a1d4587fd5ddd62d170c Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:37:04 +0200 Subject: [PATCH 3/6] Berry fix `realline` (#23546) --- CHANGELOG.md | 1 + lib/libesp32/berry_tasmota/src/be_port.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64c6128a6..6cf6e1a05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. ### Fixed - LVGL regression missing `lv.ANIM_OFF` and `lv.ANIM_ON` +- Berry fix `realline` ### Removed diff --git a/lib/libesp32/berry_tasmota/src/be_port.cpp b/lib/libesp32/berry_tasmota/src/be_port.cpp index 300c6de00..c48765077 100644 --- a/lib/libesp32/berry_tasmota/src/be_port.cpp +++ b/lib/libesp32/berry_tasmota/src/be_port.cpp @@ -316,10 +316,12 @@ char* be_fgets(void *hfile, void *buffer, int size) if (hfile != nullptr && buffer != nullptr && size > 0) { File * f_ptr = (File*) hfile; int ret = f_ptr->readBytesUntil('\n', buf, size - 1); - // Serial.printf("be_fgets size=%d ret=%d\n", size, ret); + // Serial.printf("be_fgets size=%d ret=%d, tell=%i, fsize=%i\n", size, ret, f_ptr->position(), f_ptr->size()); if (ret >= 0) { buf[ret] = 0; // add string terminator - if ((ret != 0) && (ret < size - 1)) { + if ((ret == 0) && (f_ptr->position() >= f_ptr->size())) { + return NULL; + } else if (ret < size - 1) { buf[ret] = '\n'; buf[ret+1] = 0; } @@ -327,7 +329,7 @@ char* be_fgets(void *hfile, void *buffer, int size) } } #endif // USE_UFILESYS - return nullptr; + return NULL; // return fgets(buffer, size, hfile); } From d4d6a2c779297fbdf8bbade2b5f33d42aaf34057 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 14 Jun 2025 11:03:55 +0200 Subject: [PATCH 4/6] LVGL HASPmora fix regression introduced with LVGL 9.3.0 (#23547) --- CHANGELOG.md | 1 + .../src/embedded/lv_1_constants.be | 7 +++++++ .../lv_haspmota/src/embedded/lv_haspmota.be | 20 +++++++++---------- .../src/solidify/solidified_lv_haspmota.h | 16 +++++++-------- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cf6e1a05..e1523a91a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. ### Fixed - LVGL regression missing `lv.ANIM_OFF` and `lv.ANIM_ON` - Berry fix `realline` +- LVGL HASPmora fix regression introduced with LVGL 9.3.0 ### Removed diff --git a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_1_constants.be b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_1_constants.be index 51d69e8f5..c614cbb3f 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_1_constants.be +++ b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_1_constants.be @@ -24,6 +24,8 @@ lv.ALIGN_TOP_LEFT = 1 lv.ALIGN_TOP_MID = 2 lv.ALIGN_TOP_RIGHT = 3 lv.ANIM_IMAGE_PART_MAIN = 0 +lv.ANIM_OFF = 0 +lv.ANIM_ON = 1 lv.ANIM_PLAYTIME_INFINITE = -1 lv.ANIM_REPEAT_INFINITE = -1 lv.ARC_MODE_NORMAL = 0 @@ -428,11 +430,16 @@ lv.KEY_PREV = 11 lv.KEY_RIGHT = 19 lv.KEY_UP = 17 lv.LABEL_DOT_NUM = 3 +lv.LABEL_LONG_CLIP = 4 +lv.LABEL_LONG_DOT = 1 lv.LABEL_LONG_MODE_CLIP = 4 lv.LABEL_LONG_MODE_DOTS = 1 lv.LABEL_LONG_MODE_SCROLL = 2 lv.LABEL_LONG_MODE_SCROLL_CIRCULAR = 3 lv.LABEL_LONG_MODE_WRAP = 0 +lv.LABEL_LONG_SCROLL = 2 +lv.LABEL_LONG_SCROLL_CIRCULAR = 3 +lv.LABEL_LONG_WRAP = 0 lv.LABEL_POS_LAST = 65535 lv.LABEL_TEXT_SELECTION_OFF = 65535 lv.LAYER_TYPE_NONE = 0 diff --git a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be index 970296906..6a6f038d3 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be +++ b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be @@ -2153,12 +2153,12 @@ class lvh_spangroup : lvh_obj # label do not need a sub-label def post_init(jline) self._lv_obj.set_mode(lv.SPAN_MODE_BREAK) # use lv.SPAN_MODE_BREAK by default - self._lv_obj.refr_mode() + self._lv_obj.refresh() super(self).post_init(jline) # call super -- not needed end # refresh mode - def refr_mode() - self._lv_obj.refr_mode() + def refresh() + self._lv_obj.refresh() end end @@ -2176,7 +2176,7 @@ class lvh_span : lvh_root # check if it is the parent is a spangroup if isinstance(self._parent_lvh, self._page._hm.lvh_spangroup) # print(">>> GOOD") - self._lv_obj = self._parent_lvh._lv_obj.new_span() + self._lv_obj = self._parent_lvh._lv_obj.add_span() self._style = self._lv_obj.get_style() else print("HSP: 'span' should have a parent of type 'spangroup'") @@ -2194,7 +2194,7 @@ class lvh_span : lvh_root var font = self.parse_font(t) if font != nil self._style.set_text_font(font) - self._parent_lvh.refr_mode() + self._parent_lvh.refresh() end end @@ -2271,7 +2271,7 @@ class lvh_span : lvh_root # invoke try f(self._style, v) - self._parent_lvh.refr_mode() + self._parent_lvh.refresh() except .. as e, m raise e, m + " for " + k end @@ -2522,19 +2522,19 @@ class lvh_chart : lvh_obj end def set_y_min(_y_min) self._y_min = _y_min - self._lv_obj.set_range(lv.CHART_AXIS_PRIMARY_Y, self._y_min, self._y_max) + self._lv_obj.set_axis_range(lv.CHART_AXIS_PRIMARY_Y, self._y_min, self._y_max) end def set_y_max(_y_max) self._y_max = _y_max - self._lv_obj.set_range(lv.CHART_AXIS_PRIMARY_Y, self._y_min, self._y_max) + self._lv_obj.set_axis_range(lv.CHART_AXIS_PRIMARY_Y, self._y_min, self._y_max) end def set_y2_min(_y2_min) self._y2_min = _y2_min - self._lv_obj.set_range(lv.CHART_AXIS_SECONDARY_Y, self._y2_min, self._y2_max) + self._lv_obj.set_axis_range(lv.CHART_AXIS_SECONDARY_Y, self._y2_min, self._y2_max) end def set_y2_max(_y2_max) self._y2_max = _y2_max - self._lv_obj.set_range(lv.CHART_AXIS_SECONDARY_Y, self._y2_min, self._y2_max) + self._lv_obj.set_axis_range(lv.CHART_AXIS_SECONDARY_Y, self._y2_min, self._y2_max) end def set_series1_color(color) diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h index ead74239f..cee97693e 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h +++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h @@ -9520,7 +9520,7 @@ static const bvalue be_ktab_class_lvh_spangroup[6] = { /* K1 */ be_nested_str_weak(set_mode), /* K2 */ be_nested_str_weak(lv), /* K3 */ be_nested_str_weak(SPAN_MODE_BREAK), - /* K4 */ be_nested_str_weak(refr_mode), + /* K4 */ be_nested_str_weak(refresh), /* K5 */ be_nested_str_weak(post_init), }; @@ -9566,9 +9566,9 @@ be_local_closure(class_lvh_spangroup_post_init, /* name */ /******************************************************************** -** Solidified function: refr_mode +** Solidified function: refresh ********************************************************************/ -be_local_closure(class_lvh_spangroup_refr_mode, /* name */ +be_local_closure(class_lvh_spangroup_refresh, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -9579,7 +9579,7 @@ be_local_closure(class_lvh_spangroup_refr_mode, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_lvh_spangroup, /* shared constants */ - be_str_weak(refr_mode), + be_str_weak(refresh), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -9601,7 +9601,7 @@ be_local_class(lvh_spangroup, &be_class_lvh_obj, be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(refr_mode, -1), be_const_closure(class_lvh_spangroup_refr_mode_closure) }, + { be_const_key_weak(refresh, -1), be_const_closure(class_lvh_spangroup_refresh_closure) }, { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_spangroup) }, { be_const_key_weak(post_init, 0), be_const_closure(class_lvh_spangroup_post_init_closure) }, })), @@ -9627,14 +9627,14 @@ static const bvalue be_ktab_class_lvh_span[31] = { /* K15 */ be_nested_str_weak(is_color_attribute), /* K16 */ be_nested_str_weak(parse_color), /* K17 */ be_nested_str_weak(_parent_lvh), - /* K18 */ be_nested_str_weak(refr_mode), + /* K18 */ be_nested_str_weak(refresh), /* K19 */ be_nested_str_weak(_X20for_X20), /* K20 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_), /* K21 */ be_nested_str_weak(_lv_obj), /* K22 */ be_nested_str_weak(_page), /* K23 */ be_nested_str_weak(_hm), /* K24 */ be_nested_str_weak(lvh_spangroup), - /* K25 */ be_nested_str_weak(new_span), + /* K25 */ be_nested_str_weak(add_span), /* K26 */ be_nested_str_weak(get_style), /* K27 */ be_nested_str_weak(HSP_X3A_X20_X27span_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27spangroup_X27), /* K28 */ be_nested_str_weak(parse_font), @@ -10632,7 +10632,7 @@ be_local_class(lvh_tab, static const bvalue be_ktab_class_lvh_chart[29] = { /* K0 */ be_nested_str_weak(_y_min), /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_range), + /* K2 */ be_nested_str_weak(set_axis_range), /* K3 */ be_nested_str_weak(lv), /* K4 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y), /* K5 */ be_nested_str_weak(_y_max), From ea4e399b186b6239c9160f6a47f190fc8e8dc7ec Mon Sep 17 00:00:00 2001 From: UBWH <72185209+UBWH@users.noreply.github.com> Date: Sat, 14 Jun 2025 17:10:46 +0800 Subject: [PATCH 5/6] Create DDS75L.be (#23545) LoRaWAN Decoder File for Dragino DDS75-LB/LS An Ultrasonic distance sensor https://www.dragino.com/products/distance-level-sensor/item/271-dds75-lb-ls.html --- .../decoders/vendors/dragino/DDS75L.be | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 tasmota/berry/lorawan/decoders/vendors/dragino/DDS75L.be diff --git a/tasmota/berry/lorawan/decoders/vendors/dragino/DDS75L.be b/tasmota/berry/lorawan/decoders/vendors/dragino/DDS75L.be new file mode 100644 index 000000000..fc1acfc3e --- /dev/null +++ b/tasmota/berry/lorawan/decoders/vendors/dragino/DDS75L.be @@ -0,0 +1,89 @@ +# LoRaWAN Decoder file for Dragino DDS75-LB/LS +# +# References +# User Manual: https://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/DDS75-LB_LoRaWAN_Distance_Detection_Sensor_User_Manual/ +# TTN Device Repository: https://github.com/TheThingsNetwork/lorawan-devices/blob/master/vendor/dragino/dds75-lb.js + +import string + +global.dds75lbNodes = {} + +class LwDecoDDS75LB + static def decodeUplink(Node, RSSI, FPort, Bytes) + var data = {"Device":"Dragino DDS75-LB/LS"} + data.insert("Node", Node) + + var valid_values = false + var last_seen = 1451602800 + var battery_last_seen = 1451602800 + var battery = 1000 + var rssi = RSSI + var distance = 0 + + if global.dds75lbNodes.find(Node) + last_seen = global.dds75lbNodes.item(Node)[1] + battery_last_seen = global.dds75lbNodes.item(Node)[2] + battery = global.dds75lbNodes.item(Node)[3] + rssi = global.dds75lbNodes.item(Node)[4] + distance = global.dds75lbNodes.item(Node)[5] + end + + ## SENSOR DATA ## + if 2 == FPort && 8 == Bytes.size() && 0 == ( Bytes[0] & 0x10 ) + last_seen = tasmota.rtc('local') + + battery_last_seen = tasmota.rtc('local') + battery = ((Bytes[0] << 8) | Bytes[1]) / 1000.0 + data.insert("BattV",battery) + + distance=Bytes[2]<<8 | Bytes[3] + data.insert("Distance",distance) + + valid_values = true + + ## STATUS DATA ## + elif 5 == FPort && 7 == Bytes.size() + data.insert("Sensor_Model",Bytes[0]) + data.insert("Firmware_Version", f'v{Bytes[1]:%u}.{Bytes[2]>>4:%u}.{Bytes[2]&0xF:%u}') + data.insert("Freq_Band",LwRegions[Bytes[3]-1]) + data.insert("Sub_Band",Bytes[4]) + battery_last_seen = tasmota.rtc('local') + battery = ((Bytes[5] << 8) | Bytes[6]) / 1000.0 + valid_values = true + else + # Ignore other Fports + end #Fport + + if valid_values + if global.dds75lbNodes.find(Node) + global.dds75lbNodes.remove(Node) + end + # sensor[0] [1] [2] [3] [4] [5] + global.dds75lbNodes.insert(Node, [Node, last_seen, battery_last_seen, battery, RSSI, distance]) + end + + return data + end #decodeUplink() + + static def add_web_sensor() + var msg = "" + for sensor: global.dds75lbNodes + var name = string.format("DDS75-L-%i", sensor[0]) + var name_tooltip = "Dragino DDS75-L" + var last_seen = sensor[1] + var battery_last_seen = sensor[2] + var battery = sensor[3] + var rssi = sensor[4] + msg += lwdecode.header(name, name_tooltip, battery, battery_last_seen, rssi, last_seen) + + # Sensors + var distance = sensor[5] + msg += "┆" # | + msg += string.format(" ⭳️ %.0fmm", distance) # ⭳ + msg += "{e}" # = + end + return msg + end #add_web_sensor() +end #class + +LwDeco = LwDecoDDS75LB From 76d46511638b5c813159f7297f8d01e66fe22b44 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:16:08 +0200 Subject: [PATCH 6/6] Update changelogs --- CHANGELOG.md | 6 +++--- RELEASENOTES.md | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1523a91a..986f0b468 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,9 +11,9 @@ All notable changes to this project will be documented in this file. ### Changed ### Fixed -- LVGL regression missing `lv.ANIM_OFF` and `lv.ANIM_ON` -- Berry fix `realline` -- LVGL HASPmora fix regression introduced with LVGL 9.3.0 +- LVGL regression missing `lv.ANIM_OFF` and `lv.ANIM_ON` (#23544) +- Berry fix `realline` (#23546) +- LVGL HASPmota fix regression introduced with LVGL 9.3.0 (#23547) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 10fc968fb..bce7a1caf 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -122,5 +122,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Changed ### Fixed +- Berry fix `realline` [#23546](https://github.com/arendst/Tasmota/issues/23546) +- LVGL regression missing `lv.ANIM_OFF` and `lv.ANIM_ON` [#23544](https://github.com/arendst/Tasmota/issues/23544) +- LVGL HASPmota fix regression introduced with LVGL 9.3.0 [#23547](https://github.com/arendst/Tasmota/issues/23547) ### Removed