diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 0a7cf4199..821d9945b 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -13,7 +13,7 @@ telegram_type_id,name,is_fetched 0x19,UBAMonitorSlow, 0x1A,UBASetPoints, 0x1C,UBAMaintenanceStatus, -0x1E,WM10TempMessage, +0x1E,HydrTemp, 0x23,JunkersSetMixer,fetched 0x26,UBASettingsWW,fetched 0x28,WeatherComp,fetched @@ -29,7 +29,7 @@ telegram_type_id,name,is_fetched 0x3B,Energy, 0x3D,RC35Set, 0x3E,RC35Monitor, -0x3F,RC30Timer, +0x3F,RC35Timer, 0x40,RC30Temp, 0x41,RC30Monitor, 0x42,RC35Timer2, @@ -64,6 +64,7 @@ telegram_type_id,name,is_fetched 0xBF,ErrorMessage, 0xC0,RCErrorMessage, 0xC2,UBAErrorMessage3, +0xC6,UBAErrorMessage3, 0xD1,UBAOutdoorTemp, 0xE3,UBAMonitorSlowPlus2, 0xE4,UBAMonitorFastPlus, @@ -102,7 +103,7 @@ telegram_type_id,name,is_fetched 0x0292,HPMode,fetched 0x0293,HPMode,fetched 0x0294,HPMode,fetched -0x029B,RC300Curves,fetched +0x029B,RC300Curves, 0x029C,RC300Curves, 0x029D,RC300Curves, 0x029E,RC300Curves, @@ -112,8 +113,8 @@ telegram_type_id,name,is_fetched 0x02A2,RC300Curves, 0x02A5,RC300Monitor, 0x02A6,CRFMonitor, -0x02A7,RC300Monitor, -0x02A8,CRFMonitor, +0x02A7,CRFMonitor, +0x02A8,RC300Monitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, 0x02AB,RC300Monitor, @@ -134,7 +135,7 @@ telegram_type_id,name,is_fetched 0x02BE,RC300Set, 0x02BF,RC300Set, 0x02C0,RC300Set, -0x02CC,HPPressure,fetched +0x02CC,RC300Set2, 0x02CD,MMPLUSConfigMessage,fetched 0x02CE,RC300Set2, 0x02D0,RC300Set2, diff --git a/interface/package.json b/interface/package.json index 9b8dd3a80..f22965595 100644 --- a/interface/package.json +++ b/interface/package.json @@ -43,7 +43,7 @@ }, "devDependencies": { "@babel/core": "^7.26.10", - "@eslint/js": "^9.25.0", + "@eslint/js": "^9.25.1", "@preact/compat": "^18.3.1", "@preact/preset-vite": "^2.10.1", "@trivago/prettier-plugin-sort-imports": "^5.2.2", @@ -51,12 +51,12 @@ "@types/react": "^19.1.2", "@types/react-dom": "^19.1.2", "concurrently": "^9.1.2", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "eslint-config-prettier": "^10.1.2", "prettier": "^3.5.3", "rollup-plugin-visualizer": "^5.14.0", "terser": "^5.39.0", - "typescript-eslint": "8.30.1", + "typescript-eslint": "8.31.0", "vite": "^6.3.2", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^5.1.4" diff --git a/interface/yarn.lock b/interface/yarn.lock index f6ace31de..c47e5c567 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -653,10 +653,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.25.0, @eslint/js@npm:^9.25.0": - version: 9.25.0 - resolution: "@eslint/js@npm:9.25.0" - checksum: 10c0/4a03e2b218e086af89465563151610f30c1ff38e53a4b09fa71d2e7d1f1b37d72e3aacaf2ccb949544b6fcbc12b118162f5edb6e7deee9b3bfd816745fe74dfa +"@eslint/js@npm:9.25.1, @eslint/js@npm:^9.25.1": + version: 9.25.1 + resolution: "@eslint/js@npm:9.25.1" + checksum: 10c0/87d86b512ab109bfd3b9317ced3220ea3d444ac3bfa7abd853ca7f724d72c36e213062f9def16a632365d97dc29e0094312e3682a9767590ee6f43b3d5d873fd languageName: node linkType: hard @@ -1467,15 +1467,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.30.1" +"@typescript-eslint/eslint-plugin@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.31.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.30.1" - "@typescript-eslint/type-utils": "npm:8.30.1" - "@typescript-eslint/utils": "npm:8.30.1" - "@typescript-eslint/visitor-keys": "npm:8.30.1" + "@typescript-eslint/scope-manager": "npm:8.31.0" + "@typescript-eslint/type-utils": "npm:8.31.0" + "@typescript-eslint/utils": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -1484,64 +1484,64 @@ __metadata: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/e34e067c977a20fe927a30e5ffd5402b03eb12d1c9dc932e7c4a772e78fda9e34708fa2d12ace34bad2c51ecaf5b8cfaa4b372c0c5550fe06587b721f6eae57b + checksum: 10c0/7d78e0cdcc967742752d49d2d38986ee38d0b7ca64af247e5fe0816cea9ae5f1bfa5c126154acc0846af515c4fb1c52c96926ee25c73b4c3f7e6fd73cb6d2b0e languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/parser@npm:8.30.1" +"@typescript-eslint/parser@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/parser@npm:8.31.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.30.1" - "@typescript-eslint/types": "npm:8.30.1" - "@typescript-eslint/typescript-estree": "npm:8.30.1" - "@typescript-eslint/visitor-keys": "npm:8.30.1" + "@typescript-eslint/scope-manager": "npm:8.31.0" + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/typescript-estree": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/add025d5cfca5cd4d1f74c9297e71de95c945f4efbe6cbfbc72e2cd794cd2684397c7d832bdb5177a1f54398111243d20bd0d2ffdb32a4d5230f1db7cd6fbfb6 + checksum: 10c0/9bd903b3ea4e24bfeb444d7a5c2ed82e591ef5cffc0874c609de854c05d34935cd85543e66678ecdb8e0e3eae2cda2df5c1ba66eb72010632cb9f8779031d56d languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/scope-manager@npm:8.30.1" +"@typescript-eslint/scope-manager@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/scope-manager@npm:8.31.0" dependencies: - "@typescript-eslint/types": "npm:8.30.1" - "@typescript-eslint/visitor-keys": "npm:8.30.1" - checksum: 10c0/8560fd02bb2a73b56f79af1dfa311491926f3625a04c0f32777c7c0bdec47b4a677addf2d2e2cc313416bb59b7a6e0bff7837449816a5ec5ff81e923daa76ca7 + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.0" + checksum: 10c0/eae758a24cc578fa351b8bf0c30c50de384292c0b05a58762f9b632d65a009bd5d902d806eccb6b678cc0b09686289fb4f1fd67da7f12d59ad43ff033b35cc4f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/type-utils@npm:8.30.1" +"@typescript-eslint/type-utils@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/type-utils@npm:8.31.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.30.1" - "@typescript-eslint/utils": "npm:8.30.1" + "@typescript-eslint/typescript-estree": "npm:8.31.0" + "@typescript-eslint/utils": "npm:8.31.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^2.0.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/c233d2b0b06bd8eca4ee38aebb7544d4084143590328f38c00302f98a62b06868394d4ab1cd798af68d5a47efd84976cc14d415e9e519396dc89aa8d4d47c9ee + checksum: 10c0/f6938413a583430468b259f6823bb2ab1b5cd77cd6d4e21e1803df70e329046b9579aed5bdc9bdcf4046c8091615a911ac3990859db78d00210bb867915ba37f languageName: node linkType: hard -"@typescript-eslint/types@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/types@npm:8.30.1" - checksum: 10c0/461e800bf911c24d9b61bdbeed897921454acc0c24b4e8a79f943c14234241828c13a31dce31dcce77511185f806a2fb94769075e122e3182ba5a32dd55573eb +"@typescript-eslint/types@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/types@npm:8.31.0" + checksum: 10c0/04130a30aac477d36d6a155399b27773457aeb9b485ef8fb56fee05725b6e36768c9fac7e4d1f073fd16988de0eb7dffc743c3f834ae907cf918cabb075e5cd8 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.30.1" +"@typescript-eslint/typescript-estree@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.31.0" dependencies: - "@typescript-eslint/types": "npm:8.30.1" - "@typescript-eslint/visitor-keys": "npm:8.30.1" + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -1550,32 +1550,32 @@ __metadata: ts-api-utils: "npm:^2.0.1" peerDependencies: typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/9eb0b1bc4b5df37c84ac411d77ce0edf934b5fdde021ed45c984aa7894132ff7a276d2b95e2d29ef84c411df8ecdf096eec3e07ec1ee5b1fa8c623d40a82ecf0 + checksum: 10c0/0ec074b2b9c49f80fafea716aa0cc4b05085e65730a3ef7c7d2d39db1657a40b38abe83f22bbe15ac4f6fdf576692f47d2d057347242e6cef5be81d070f55064 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/utils@npm:8.30.1" +"@typescript-eslint/utils@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/utils@npm:8.31.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.30.1" - "@typescript-eslint/types": "npm:8.30.1" - "@typescript-eslint/typescript-estree": "npm:8.30.1" + "@typescript-eslint/scope-manager": "npm:8.31.0" + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/typescript-estree": "npm:8.31.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/ad54aa386edc2e19957c73ef25eea3e263e7e15e941c72e91ca6c8ea2536979d343a6069de0e40b15f0e732ddaacbfcc3d5f25a1583e11a32120c42c471802ea + checksum: 10c0/1fd4f62e16a44a5be2de501f70ba4b2d64479e014370bde7bbc6de6897cf1699766a8b7be4deb9b0328e74c2b4171839336ede4e3c60fec6ac8378b623a75275 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.30.1": - version: 8.30.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.30.1" +"@typescript-eslint/visitor-keys@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.31.0" dependencies: - "@typescript-eslint/types": "npm:8.30.1" + "@typescript-eslint/types": "npm:8.31.0" eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/bdc182289c68a5c8f891f9aecf6ccb59743c3f2b1bbe57f57f8c7ce1688f4381182e301919895cefc929539eea914eeb847f7d351cdc3f685ed6c5ee67a10c9e + checksum: 10c0/e41e2a9e287d11232cda6126377d1df4de69c6e9dc2a14058819cff15280ec654a3877886a6806728196f299766cfbb0b299eb021c2ce168eb15dff5eb07b51b languageName: node linkType: hard @@ -1587,7 +1587,7 @@ __metadata: "@babel/core": "npm:^7.26.10" "@emotion/react": "npm:^11.14.0" "@emotion/styled": "npm:^11.14.0" - "@eslint/js": "npm:^9.25.0" + "@eslint/js": "npm:^9.25.1" "@mui/icons-material": "npm:^7.0.2" "@mui/material": "npm:^7.0.2" "@preact/compat": "npm:^18.3.1" @@ -1600,7 +1600,7 @@ __metadata: alova: "npm:3.2.10" async-validator: "npm:^4.2.5" concurrently: "npm:^9.1.2" - eslint: "npm:^9.25.0" + eslint: "npm:^9.25.1" eslint-config-prettier: "npm:^10.1.2" jwt-decode: "npm:^4.0.0" magic-string: "npm:^0.30.17" @@ -1616,7 +1616,7 @@ __metadata: terser: "npm:^5.39.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.8.3" - typescript-eslint: "npm:8.30.1" + typescript-eslint: "npm:8.31.0" vite: "npm:^6.3.2" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^5.1.4" @@ -2024,9 +2024,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001714 - resolution: "caniuse-lite@npm:1.0.30001714" - checksum: 10c0/b0e3372f018c5c177912f0282af98049057d83c80846293a4e3df728644a622db42a9e8971d6b7708d76e0fd4e9f6d5ce93802cf4e6818de80fdf371dc0f6a06 + version: 1.0.30001715 + resolution: "caniuse-lite@npm:1.0.30001715" + checksum: 10c0/0109a7da797ffbe1aa197baa5242b205011098eecec1087ef3d0c58ceea19be325ab6679b2751a78660adc3051a9f77e99d5789938fd1eb1235e6fdf6a1dbf8e languageName: node linkType: hard @@ -2597,9 +2597,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.73": - version: 1.5.139 - resolution: "electron-to-chromium@npm:1.5.139" - checksum: 10c0/1b468c0c02a38322261b50b12ed090ff792a0d2ea24f299368babd484d5b81829528540463158572a3524fd835014d877d6c4bf097509bdb13ca696609b04aca + version: 1.5.140 + resolution: "electron-to-chromium@npm:1.5.140" + checksum: 10c0/cd0c5a3e0624592494e03b1ae28e04b0d4f8dec0e2ff8fc0f38dc8622fdf795811ef8abe41167f03380f969515c2f4f23297f6e1372ff36aad01c78446565e6d languageName: node linkType: hard @@ -3028,9 +3028,9 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^9.25.0": - version: 9.25.0 - resolution: "eslint@npm:9.25.0" +"eslint@npm:^9.25.1": + version: 9.25.1 + resolution: "eslint@npm:9.25.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.12.1" @@ -3038,7 +3038,7 @@ __metadata: "@eslint/config-helpers": "npm:^0.2.1" "@eslint/core": "npm:^0.13.0" "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.25.0" + "@eslint/js": "npm:9.25.1" "@eslint/plugin-kit": "npm:^0.2.8" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" @@ -3074,7 +3074,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/eb984c0bad4f42ab02f5275fc02ebba98ff29dcecf1995065ec0a642e9c47a9b86a1407efa76fcdc1f096d09473160122a91a4acc18c54eb36a91cb36bffae20 + checksum: 10c0/3bb1997ae994253d441e56aba2fc64a71b3b8dce32756de3dedae5e85416ba33eb07e19ede94a6fa8ce7ef3a0a3b0dd8b6836f41be46a3ab52e5345ad59a553f languageName: node linkType: hard @@ -3303,7 +3303,7 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.3": +"fdir@npm:^6.4.3, fdir@npm:^6.4.4": version: 6.4.4 resolution: "fdir@npm:6.4.4" peerDependencies: @@ -4607,7 +4607,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.17": +"magic-string@npm:0.x >= 0.26.0, magic-string@npm:^0.30.17": version: 0.30.17 resolution: "magic-string@npm:0.30.17" dependencies: @@ -6493,12 +6493,12 @@ __metadata: linkType: hard "tinyglobby@npm:^0.2.12": - version: 0.2.12 - resolution: "tinyglobby@npm:0.2.12" + version: 0.2.13 + resolution: "tinyglobby@npm:0.2.13" dependencies: - fdir: "npm:^6.4.3" + fdir: "npm:^6.4.4" picomatch: "npm:^4.0.2" - checksum: 10c0/7c9be4fd3625630e262dcb19015302aad3b4ba7fc620f269313e688f2161ea8724d6cb4444baab5ef2826eb6bed72647b169a33ec8eea37501832a2526ff540f + checksum: 10c0/ef07dfaa7b26936601d3f6d999f7928a4d1c6234c5eb36896bb88681947c0d459b7ebe797022400e555fe4b894db06e922b95d0ce60cb05fd827a0a66326b18c languageName: node linkType: hard @@ -6616,17 +6616,17 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.30.1": - version: 8.30.1 - resolution: "typescript-eslint@npm:8.30.1" +"typescript-eslint@npm:8.31.0": + version: 8.31.0 + resolution: "typescript-eslint@npm:8.31.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.30.1" - "@typescript-eslint/parser": "npm:8.30.1" - "@typescript-eslint/utils": "npm:8.30.1" + "@typescript-eslint/eslint-plugin": "npm:8.31.0" + "@typescript-eslint/parser": "npm:8.31.0" + "@typescript-eslint/utils": "npm:8.31.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/41c53910308fa03d2216ccae9885e82422b8abc96b384a6e47277b5b351f462e6da3a4dfbb8c9bc7defa8c96fb71c4371fa5759eaa86c7c1b3b53a4a9994e6ab + checksum: 10c0/8545887f70c4f40c4aee51d224326368f67ef5f770ba5ae9e67bfd36f4d9ab5f3414569ffaaec311893a312539934ea367a68135c6f2b0a3e175c3de59507338 languageName: node linkType: hard @@ -6800,18 +6800,18 @@ __metadata: linkType: hard "vite-prerender-plugin@npm:^0.5.3": - version: 0.5.9 - resolution: "vite-prerender-plugin@npm:0.5.9" + version: 0.5.10 + resolution: "vite-prerender-plugin@npm:0.5.10" dependencies: kolorist: "npm:^1.8.0" + magic-string: "npm:0.x >= 0.26.0" node-html-parser: "npm:^6.1.12" simple-code-frame: "npm:^1.3.0" source-map: "npm:^0.7.4" stack-trace: "npm:^1.0.0-pre2" peerDependencies: - magic-string: ">= 0.26.0" vite: 5.x || 6.x - checksum: 10c0/05532731b87d8b630a0d054acca8f0a447d855b8d1e242a88dd6c5e29facbd682de79bd118c86a03a5192de3b9a2939769b6de4b43fed292ef73316e8726cdbd + checksum: 10c0/8523029ce7d38f004e8d0922b87d001223aa28115cbbf63b17a0ccdf888a6052ba48f21892d62211a6e39d869fbb403fd1658197fd58efc923ecfb551a6e97d3 languageName: node linkType: hard diff --git a/lib_standalone/ArduinoJson.h b/lib_standalone/ArduinoJson.h index 46f44c564..1b681b27a 100644 --- a/lib_standalone/ArduinoJson.h +++ b/lib_standalone/ArduinoJson.h @@ -239,11 +239,11 @@ #define ARDUINOJSON_BIN2ALPHA_1111() P #define ARDUINOJSON_BIN2ALPHA_(A, B, C, D) ARDUINOJSON_BIN2ALPHA_##A##B##C##D() #define ARDUINOJSON_BIN2ALPHA(A, B, C, D) ARDUINOJSON_BIN2ALPHA_(A, B, C, D) -#define ARDUINOJSON_VERSION "7.4.0" +#define ARDUINOJSON_VERSION "7.4.1" #define ARDUINOJSON_VERSION_MAJOR 7 #define ARDUINOJSON_VERSION_MINOR 4 -#define ARDUINOJSON_VERSION_REVISION 0 -#define ARDUINOJSON_VERSION_MACRO V740 +#define ARDUINOJSON_VERSION_REVISION 1 +#define ARDUINOJSON_VERSION_MACRO V741 #ifndef ARDUINOJSON_VERSION_NAMESPACE # define ARDUINOJSON_VERSION_NAMESPACE \ ARDUINOJSON_CONCAT5( \ @@ -2549,12 +2549,17 @@ class VariantData { type_ = VariantType::LinkedString; content_.asLinkedString = s; } - void setTinyString(const char* s, uint8_t n) { + template + void setTinyString(const TAdaptedString& s) { ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first - ARDUINOJSON_ASSERT(s); + ARDUINOJSON_ASSERT(s.size() <= tinyStringMaxLength); type_ = VariantType::TinyString; - for (uint8_t i = 0; i < n; i++) - content_.asTinyString[i] = s[i]; + auto n = uint8_t(s.size()); + for (uint8_t i = 0; i < n; i++) { + char c = s[i]; + ARDUINOJSON_ASSERT(c != 0); // no NUL in tiny string + content_.asTinyString[i] = c; + } content_.asTinyString[n] = 0; } void setOwnedString(StringNode* s) { @@ -5423,7 +5428,7 @@ class StringBuilder { ARDUINOJSON_ASSERT(node_ != nullptr); char* p = node_->data; if (isTinyString(p, size_)) { - variant->setTinyString(p, static_cast(size_)); + variant->setTinyString(adaptString(p, size_)); return; } p[size_] = 0; @@ -5829,7 +5834,7 @@ inline bool VariantData::setString(TAdaptedString value, return true; } if (isTinyString(value, value.size())) { - setTinyString(value.data(), uint8_t(value.size())); + setTinyString(value); return true; } auto dup = resources->saveString(value); @@ -7490,7 +7495,7 @@ class StringBuffer { ARDUINOJSON_ASSERT(node_ != nullptr); const char* s = node_->data; if (isTinyString(s, size_)) - data->setTinyString(s, static_cast(size_)); + data->setTinyString(adaptString(s, size_)); else data->setOwnedString(commitStringNode()); } diff --git a/mock-api/yarn.lock b/mock-api/yarn.lock index e94fb6f9f..9a7b69dc1 100644 --- a/mock-api/yarn.lock +++ b/mock-api/yarn.lock @@ -140,9 +140,9 @@ __metadata: linkType: hard "@noble/hashes@npm:^1.1.5": - version: 1.7.2 - resolution: "@noble/hashes@npm:1.7.2" - checksum: 10c0/b1411eab3c0b6691d847e9394fe7f1fcd45eeb037547c8f97e7d03c5068a499b4aef188e8e717eee67389dca4fee17d69d7e0f58af6c092567b0b76359b114b2 + version: 1.8.0 + resolution: "@noble/hashes@npm:1.8.0" + checksum: 10c0/06a0b52c81a6fa7f04d67762e08b2c476a00285858150caeaaff4037356dd5e119f45b2a530f638b77a5eeca013168ec1b655db41bae3236cb2e9d511484fc77 languageName: node linkType: hard diff --git a/pio_local.ini_example b/pio_local.ini_example index 4345bca98..b21dd4621 100644 --- a/pio_local.ini_example +++ b/pio_local.ini_example @@ -51,11 +51,12 @@ custom_password = admin ; custom_emsesp_ip = 10.10.10.93 ; example override for lib_deps and using locally built modules -lib_deps = - bblanchon/ArduinoJson - ESP32Async/AsyncTCP - ESP32Async/ESPAsyncWebServer - file://${PROJECT_DIR}/../modules/EMS-ESP-Modules +; lib_deps = +; bblanchon/ArduinoJson @ 7.4.1 +; ESP32Async/AsyncTCP @ 3.4.0 +; ESP32Async/ESPAsyncWebServer @ 3.7.7 +; file://${PROJECT_DIR}/../modules/EMS-ESP-Modules +; ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.7 ; ** debug settings ** ; to be used with esp-prog/JTAG hardware device like https://docs.espressif.com/projects/esp-dev-kits/en/latest/other/esp-prog/user_guide.html diff --git a/platformio.ini b/platformio.ini index da8f7ba88..40c2c13c4 100644 --- a/platformio.ini +++ b/platformio.ini @@ -100,10 +100,10 @@ monitor_filters = direct build_type = release board_build.filesystem = littlefs lib_deps = - bblanchon/ArduinoJson @ 7.4.0 - ESP32Async/AsyncTCP @ 3.3.8 - ESP32Async/ESPAsyncWebServer @ 3.7.6 - https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.6 + bblanchon/ArduinoJson @ 7.4.1 + ESP32Async/AsyncTCP @ 3.4.0 + ESP32Async/ESPAsyncWebServer @ 3.7.7 + https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.7 ; ; Builds for different board types diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp index 067f2b334..ff3d7baf8 100644 --- a/src/core/analogsensor.cpp +++ b/src/core/analogsensor.cpp @@ -594,7 +594,12 @@ void AnalogSensor::publish_values(const bool force) { if (sensor.type() == AnalogType::DIGITAL_IN || sensor.type() == AnalogType::DIGITAL_OUT) { Helpers::render_boolean(sample_val, false); } - config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else " + sample_val + "}}"; + // don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery + if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) { + config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}"; + } else { + config["val_tpl"] = (std::string) "{{" + val_obj + "}}"; + } char uniq_s[70]; if (Mqtt::entity_format() == Mqtt::entityFormat::MULTI_SHORT) { diff --git a/src/core/shower.cpp b/src/core/shower.cpp index b92ccd84f..6905b50cf 100644 --- a/src/core/shower.cpp +++ b/src/core/shower.cpp @@ -222,8 +222,15 @@ void Shower::set_shower_state(bool state, bool force) { snprintf(stat_t, sizeof(stat_t), "%s/shower_data", Mqtt::base().c_str()); doc["stat_t"] = stat_t; - doc["name"] = "Shower Duration"; - doc["val_tpl"] = "{{value_json.duration if value_json.duration is defined else 0}}"; + doc["name"] = "Shower Duration"; + + // don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery + if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) { + doc["val_tpl"] = "{{value_json.duration if value_json.duration is defined else 0}}"; + } else { + doc["val_tpl"] = "{{value_json.duration}}"; + } + doc["unit_of_meas"] = "s"; doc["stat_cla"] = "measurement"; doc["dev_cla"] = "duration"; diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 7b4311391..411c1fae3 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1881,13 +1881,13 @@ void Boiler::process_UBAErrorMessage2(std::shared_ptr telegram) return; } - uint32_t date = 0; - char code[sizeof(lastCode_)] = {0}; - uint16_t codeNo = EMS_VALUE_INT16_NOTSET; - code[0] = telegram->message_data[5]; - code[1] = telegram->message_data[6]; - code[2] = telegram->message_data[7]; - code[3] = 0; + uint32_t date = 0; + char code[sizeof(lastCode_)] = {0}; + uint16_t codeNo = EMS_VALUE_INT16_NOTSET; + code[0] = telegram->message_data[5]; + code[1] = telegram->message_data[6]; + code[2] = telegram->message_data[7]; + code[3] = 0; telegram->read_value(codeNo, 8); if (!std::isprint(code[0]) || !std::isprint(code[1]) || !std::isprint(code[2])) { return; @@ -1947,13 +1947,13 @@ void Boiler::process_UBAErrorMessage3(std::shared_ptr telegram) return; } - uint32_t date = 0; - char code[sizeof(lastCode_)] = {0}; - uint16_t codeNo = EMS_VALUE_INT16_NOTSET; - code[0] = telegram->message_data[6]; - code[1] = telegram->message_data[7]; - code[2] = telegram->message_data[8]; - code[3] = 0; + uint32_t date = 0; + char code[sizeof(lastCode_)] = {0}; + uint16_t codeNo = EMS_VALUE_INT16_NOTSET; + code[0] = telegram->message_data[6]; + code[1] = telegram->message_data[7]; + code[2] = telegram->message_data[8]; + code[3] = 0; telegram->read_value(codeNo, 9); if (!std::isprint(code[0]) || !std::isprint(code[1]) || !std::isprint(code[2])) { return; diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 5befbffbf..aa66281b7 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -149,7 +149,7 @@ class Boiler : public EMSdevice { char lastCode_[55]; // last error code char serviceCode_[4]; // 3 character status/service code uint16_t serviceCodeNumber_; // error/service code - uint32_t lastCodeDate_ = 0; // last code date + uint32_t lastCodeDate_ = 0; // last code date uint8_t emergencyOps_; uint8_t emergencyTemp_; uint16_t headertemp_; // see #1317 diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index c6a346769..790c4cba4 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -399,7 +399,12 @@ void WebCustomEntityService::publish(const bool force) { char val_cond[65]; snprintf(val_obj, sizeof(val_obj), "value_json['%s']", entityItem.name.c_str()); snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); - config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}"; + // don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery + if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) { + config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}"; + } else { + config["val_tpl"] = (std::string) "{{" + val_obj + "}}"; + } char uniq_s[70]; snprintf(uniq_s, sizeof(uniq_s), "%s_%s", F_(custom), entityItem.name.c_str()); diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index af6eed9f8..599672659 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -267,7 +267,12 @@ void WebSchedulerService::publish(const bool force) { char val_cond[65]; snprintf(val_obj, sizeof(val_obj), "value_json['%s']", scheduleItem.name.c_str()); snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); - config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}"; + + if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) { + config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}"; + } else { + config["val_tpl"] = (std::string) "{{" + val_obj + "}}"; // omit value conditional Jinja2 template code + } char uniq_s[70]; snprintf(uniq_s, sizeof(uniq_s), "%s_%s", F_(scheduler), scheduleItem.name.c_str());