diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 370f69511..1ebd80cd7 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -11,12 +11,15 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/). - read 0x02A5 for thermostat CT200 [#2277](https://github.com/emsesp/EMS-ESP32/issues/2277) - Add "duplicate" option to Custom Entities [#2266](https://github.com/emsesp/EMS-ESP32/discussion/2266) - Mask bits for bool custom entities +- thermostat `reduce threshold` [#2288](https://github.com/emsesp/EMS-ESP32/issues/2288) +- thermostat `absent` [#1957](https://github.com/emsesp/EMS-ESP32/issues/1957) ## Fixed - long numbers of custom entities [#2267](https://github.com/emsesp/EMS-ESP32/issues/2267) - modbus command path to `api/` [#2276](https://github.com/emsesp/EMS-ESP32/issues/2276) - info command for devices without entity-commands [#2274](https://github.com/emsesp/EMS-ESP32/issues/2274) +- CW100 settings telegram 0x241 [#2290](https://github.com/emsesp/EMS-ESP32/issues/2290) ## Changed diff --git a/interface/package.json b/interface/package.json index 398bb26db..49085a43a 100644 --- a/interface/package.json +++ b/interface/package.json @@ -22,16 +22,16 @@ }, "dependencies": { "@alova/adapter-xhr": "2.0.11", - "@emotion/react": "^11.13.5", - "@emotion/styled": "^11.13.5", - "@mui/icons-material": "^6.1.10", - "@mui/material": "^6.1.10", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@mui/icons-material": "^6.2.0", + "@mui/material": "^6.2.0", "@table-library/react-table-library": "4.1.7", "alova": "3.2.6", "async-validator": "^4.2.5", "jwt-decode": "^4.0.0", "mime-types": "^2.1.35", - "preact": "^10.25.1", + "preact": "^10.25.2", "react": "^19.0.0", "react-dom": "^19.0.0", "react-icons": "^5.4.0", @@ -44,12 +44,12 @@ "@babel/core": "^7.26.0", "@eslint/js": "^9.16.0", "@preact/compat": "^18.3.1", - "@preact/preset-vite": "^2.9.2", - "@trivago/prettier-plugin-sort-imports": "^5.0.1", + "@preact/preset-vite": "^2.9.3", + "@trivago/prettier-plugin-sort-imports": "^5.2.0", "@types/formidable": "^3", - "@types/node": "^22.10.1", - "@types/react": "^18.3.13", - "@types/react-dom": "^18.3.1", + "@types/node": "^22.10.2", + "@types/react": "^19.0.1", + "@types/react-dom": "^19.0.2", "concurrently": "^9.1.0", "eslint": "^9.16.0", "eslint-config-prettier": "^9.1.0", @@ -57,10 +57,10 @@ "prettier": "^3.4.2", "rollup-plugin-visualizer": "^5.12.0", "terser": "^5.37.0", - "typescript-eslint": "8.17.0", + "typescript-eslint": "8.18.0", "vite": "^6.0.3", "vite-plugin-imagemin": "^0.6.1", - "vite-tsconfig-paths": "^5.1.3" + "vite-tsconfig-paths": "^5.1.4" }, "packageManager": "yarn@4.5.3" } diff --git a/interface/yarn.lock b/interface/yarn.lock index 589f41f5e..5f75dc1e4 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -329,6 +329,19 @@ __metadata: languageName: node linkType: hard +"@emotion/cache@npm:^11.14.0": + version: 11.14.0 + resolution: "@emotion/cache@npm:11.14.0" + dependencies: + "@emotion/memoize": "npm:^0.9.0" + "@emotion/sheet": "npm:^1.4.0" + "@emotion/utils": "npm:^1.4.2" + "@emotion/weak-memoize": "npm:^0.4.0" + stylis: "npm:4.2.0" + checksum: 10c0/3fa3e7a431ab6f8a47c67132a00ac8358f428c1b6c8421d4b20de9df7c18e95eec04a5a6ff5a68908f98d3280044f247b4965ac63df8302d2c94dba718769724 + languageName: node + linkType: hard + "@emotion/hash@npm:^0.9.2": version: 0.9.2 resolution: "@emotion/hash@npm:0.9.2" @@ -352,15 +365,15 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:^11.13.5": - version: 11.13.5 - resolution: "@emotion/react@npm:11.13.5" +"@emotion/react@npm:^11.14.0": + version: 11.14.0 + resolution: "@emotion/react@npm:11.14.0" dependencies: "@babel/runtime": "npm:^7.18.3" "@emotion/babel-plugin": "npm:^11.13.5" - "@emotion/cache": "npm:^11.13.5" + "@emotion/cache": "npm:^11.14.0" "@emotion/serialize": "npm:^1.3.3" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.2.0" "@emotion/utils": "npm:^1.4.2" "@emotion/weak-memoize": "npm:^0.4.0" hoist-non-react-statics: "npm:^3.3.1" @@ -369,7 +382,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/16b4810bc68c619cb25145e543880e905fc99332bacc1c39b20c913b2e6130289d9acd909abba55820fa796c5cca3cade6fe79a26b3ab7e4e2d040c61ee14a6e + checksum: 10c0/d0864f571a9f99ec643420ef31fde09e2006d3943a6aba079980e4d5f6e9f9fecbcc54b8f617fe003c00092ff9d5241179149ffff2810cb05cf72b4620cfc031 languageName: node linkType: hard @@ -393,15 +406,15 @@ __metadata: languageName: node linkType: hard -"@emotion/styled@npm:^11.13.5": - version: 11.13.5 - resolution: "@emotion/styled@npm:11.13.5" +"@emotion/styled@npm:^11.14.0": + version: 11.14.0 + resolution: "@emotion/styled@npm:11.14.0" dependencies: "@babel/runtime": "npm:^7.18.3" "@emotion/babel-plugin": "npm:^11.13.5" "@emotion/is-prop-valid": "npm:^1.3.0" "@emotion/serialize": "npm:^1.3.3" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.2.0" "@emotion/utils": "npm:^1.4.2" peerDependencies: "@emotion/react": ^11.0.0-rc.0 @@ -409,7 +422,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/18d3e38482f92c93446fbfe46e3ca2b182f228f3317ca23f9bd69ddc313bacabf8ecf4d7e720e9aa492bd651cb0b8f87196547bd136666ef50287c414cd36936 + checksum: 10c0/20aa5c488e4edecf63659212fc5ba1ccff2d3a66593fc8461de7cd5fe9192a741db357ffcd270a455bd61898d7f37cd5c84b4fd2b7974dade712badf7860ca9c languageName: node linkType: hard @@ -420,12 +433,12 @@ __metadata: languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": - version: 1.1.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.2.0" peerDependencies: react: ">=16.8.0" - checksum: 10c0/a883480f3a7139fb4a43e71d3114ca57e2b7ae5ff204e05cd9e59251a113773b8f64eb75d3997726250aca85eb73447638c8f51930734bdd16b96762b65e58c3 + checksum: 10c0/074dbc92b96bdc09209871070076e3b0351b6b47efefa849a7d9c37ab142130767609ca1831da0055988974e3b895c1de7606e4c421fecaa27c3e56a2afd3b08 languageName: node linkType: hard @@ -798,49 +811,49 @@ __metadata: languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^6.1.10": - version: 6.1.10 - resolution: "@mui/core-downloads-tracker@npm:6.1.10" - checksum: 10c0/b94259c7cc8065dfed7ead4250e1bba4e65ec5625d86a11d118d1c22ec05f058d6f93b66d73bba9d787453058a2a05b5a1bbfd01ac53f3410e25358da3e4a571 +"@mui/core-downloads-tracker@npm:^6.2.0": + version: 6.2.0 + resolution: "@mui/core-downloads-tracker@npm:6.2.0" + checksum: 10c0/5bdfb204859f004d631fcd2d97bcf0ec41ca17a7e4a453f89ecd8e8d460b3cd26c6eb93a6170bdcc510bb481e028fa35fdcf17e6673ea593dba615b95477fde6 languageName: node linkType: hard -"@mui/icons-material@npm:^6.1.10": - version: 6.1.10 - resolution: "@mui/icons-material@npm:6.1.10" +"@mui/icons-material@npm:^6.2.0": + version: 6.2.0 + resolution: "@mui/icons-material@npm:6.2.0" dependencies: "@babel/runtime": "npm:^7.26.0" peerDependencies: - "@mui/material": ^6.1.10 + "@mui/material": ^6.2.0 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/970a402962b27219bdff4b7af32e758fea800c6879112887cdc71f0d6869c3ea66e24e320edbc39b704f174511a918a055b96d49b91bdeefb1afe8d753b42d4e + checksum: 10c0/317990cd9c349a9dadc24f2ece6aa7b99b202f01c549010881d361cc44f816f2a5def0e70b6241967184f1dea16e7459715d32299ca0fd9524226c9f1f91efc2 languageName: node linkType: hard -"@mui/material@npm:^6.1.10": - version: 6.1.10 - resolution: "@mui/material@npm:6.1.10" +"@mui/material@npm:^6.2.0": + version: 6.2.0 + resolution: "@mui/material@npm:6.2.0" dependencies: "@babel/runtime": "npm:^7.26.0" - "@mui/core-downloads-tracker": "npm:^6.1.10" - "@mui/system": "npm:^6.1.10" + "@mui/core-downloads-tracker": "npm:^6.2.0" + "@mui/system": "npm:^6.2.0" "@mui/types": "npm:^7.2.19" - "@mui/utils": "npm:^6.1.10" + "@mui/utils": "npm:^6.2.0" "@popperjs/core": "npm:^2.11.8" "@types/react-transition-group": "npm:^4.4.11" clsx: "npm:^2.1.1" csstype: "npm:^3.1.3" prop-types: "npm:^15.8.1" - react-is: "npm:^18.3.1" + react-is: "npm:^19.0.0" react-transition-group: "npm:^4.4.5" peerDependencies: "@emotion/react": ^11.5.0 "@emotion/styled": ^11.3.0 - "@mui/material-pigment-css": ^6.1.10 + "@mui/material-pigment-css": ^6.2.0 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -853,16 +866,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/501f434aa61b56806cd6d8bc27ddd0cfc6f423ee132bb0cc02ca36af182b251b8d15dd69ed8b90742813039d2bfe1e396f6ddf84f15f453d53bfbf355d18f99a + checksum: 10c0/e01d719b3d9ffc7bec6ff277f272505c8caa6406a1c520b28b5abb389a78bb103893a815a78e9fe10f20b62fbc4c95c787ab31b8d50410465a683e421286b33c languageName: node linkType: hard -"@mui/private-theming@npm:^6.1.10": - version: 6.1.10 - resolution: "@mui/private-theming@npm:6.1.10" +"@mui/private-theming@npm:^6.2.0": + version: 6.2.0 + resolution: "@mui/private-theming@npm:6.2.0" dependencies: "@babel/runtime": "npm:^7.26.0" - "@mui/utils": "npm:^6.1.10" + "@mui/utils": "npm:^6.2.0" prop-types: "npm:^15.8.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -870,13 +883,13 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/1e296d7582b276e7b9de8c9af252b4998ab8343a570ed7ead8c23b3275a218f0722f389d698c45cab9b4b219ad82411af6f71c7678818d3387925db01d1a9ead + checksum: 10c0/49f563276747c8e2a133c2cf81713ebd5231cce8c24940ddc72d470477218621c0b5a203e0e4729d276d4d3eb1670fc15afe7b497719b84851cbc798b3a52bda languageName: node linkType: hard -"@mui/styled-engine@npm:^6.1.10": - version: 6.1.10 - resolution: "@mui/styled-engine@npm:6.1.10" +"@mui/styled-engine@npm:^6.2.0": + version: 6.2.0 + resolution: "@mui/styled-engine@npm:6.2.0" dependencies: "@babel/runtime": "npm:^7.26.0" "@emotion/cache": "npm:^11.13.5" @@ -893,19 +906,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 10c0/2e6ad8f1c3de4ce4b6a246de976f304e433e8a5031465bc9614e51eeae2dd308c76dbdfc2b9f95bbcb971c1008bdbc9103d9418313934a9760f6555334997586 + checksum: 10c0/9831015df8057ce99db21e611410b4eaf947c959fbbf1cb4652c77288ae2db176cd10a1c7a8a2f1d7f80b0478075beaec3c0338a8c3ad146695f169f22582f5d languageName: node linkType: hard -"@mui/system@npm:^6.1.10": - version: 6.1.10 - resolution: "@mui/system@npm:6.1.10" +"@mui/system@npm:^6.2.0": + version: 6.2.0 + resolution: "@mui/system@npm:6.2.0" dependencies: "@babel/runtime": "npm:^7.26.0" - "@mui/private-theming": "npm:^6.1.10" - "@mui/styled-engine": "npm:^6.1.10" + "@mui/private-theming": "npm:^6.2.0" + "@mui/styled-engine": "npm:^6.2.0" "@mui/types": "npm:^7.2.19" - "@mui/utils": "npm:^6.1.10" + "@mui/utils": "npm:^6.2.0" clsx: "npm:^2.1.1" csstype: "npm:^3.1.3" prop-types: "npm:^15.8.1" @@ -921,7 +934,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/ba228faa0a2c3f5b25770faa1484c04846889642eda1d0c3922b324c6de2946fc4debf7ddb994f1ef349bbe260243ab5e1117b624ea5062209ba1898f5dff1a3 + checksum: 10c0/1b593985fe0428cc945e397e948500f91d9f5f8b1610cdd47b3e55dbfbe54a4467fe8af333e8261545553cfe71b394cf4762e7f93944d8bbafe0d4090310639e languageName: node linkType: hard @@ -937,23 +950,23 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^6.1.10": - version: 6.1.10 - resolution: "@mui/utils@npm:6.1.10" +"@mui/utils@npm:^6.2.0": + version: 6.2.0 + resolution: "@mui/utils@npm:6.2.0" dependencies: "@babel/runtime": "npm:^7.26.0" "@mui/types": "npm:^7.2.19" - "@types/prop-types": "npm:^15.7.13" + "@types/prop-types": "npm:^15.7.14" clsx: "npm:^2.1.1" prop-types: "npm:^15.8.1" - react-is: "npm:^18.3.1" + react-is: "npm:^19.0.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/0cecda147b026fbb6f397e54fc08719c5805a7e5fd4255c30a45a7155748345dbbc57fda9181986db222f93da0012f001b1f1f624084e5227ca7814ed1c3dd30 + checksum: 10c0/a010b21f16673ece7f7c05e9c8a26a3db7d1a9e5557f2669178049bdd6f64525983eee9e6e3837221ff9261981048166716f4d37ae8cc77a2f9f525514b83496 languageName: node linkType: hard @@ -1029,9 +1042,9 @@ __metadata: languageName: node linkType: hard -"@preact/preset-vite@npm:^2.9.2": - version: 2.9.2 - resolution: "@preact/preset-vite@npm:2.9.2" +"@preact/preset-vite@npm:^2.9.3": + version: 2.9.3 + resolution: "@preact/preset-vite@npm:2.9.3" dependencies: "@babel/code-frame": "npm:^7.22.13" "@babel/plugin-transform-react-jsx": "npm:^7.22.15" @@ -1048,7 +1061,7 @@ __metadata: peerDependencies: "@babel/core": 7.x vite: 2.x || 3.x || 4.x || 5.x || 6.x - checksum: 10c0/7065fa6d9d2c4ddd3f0b8b26f52513cf4e7712714d00e994184d73a0af625a00e8c1a3afd6e94cda0884c6e3188f75f55e4bf9aa477f2dac714bcb817bd734d9 + checksum: 10c0/61f7a9869dd7a5eb145851622cb219bf7dfffea770641a85d4e5560a9e263af4f07cbea3795d44abec7efaaa789b33f7dd20f6f99e14ce9a3a202dd584013efe languageName: node linkType: hard @@ -1249,9 +1262,9 @@ __metadata: languageName: node linkType: hard -"@trivago/prettier-plugin-sort-imports@npm:^5.0.1": - version: 5.0.1 - resolution: "@trivago/prettier-plugin-sort-imports@npm:5.0.1" +"@trivago/prettier-plugin-sort-imports@npm:^5.2.0": + version: 5.2.0 + resolution: "@trivago/prettier-plugin-sort-imports@npm:5.2.0" dependencies: "@babel/generator": "npm:^7.26.2" "@babel/parser": "npm:^7.26.2" @@ -1271,7 +1284,7 @@ __metadata: optional: true svelte: optional: true - checksum: 10c0/2256a2ff06f1809f52e37d609ed04cdb5253f3ee83e959dfff301f4e6f3295cdd4adb5015d5a1ac40ff934f6bde9c0c2bd1e84ee7c0d65e5b755c4ce739bfe08 + checksum: 10c0/73ebdea1f5cef609e1bf7ed7a276916770de210d29e512dfcdac68fafd05cc155f5aec5962bcce65952d24e43aeee81bc58caf37c8d298e7d7f23d4851534405 languageName: node linkType: hard @@ -1411,7 +1424,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^22.10.1": +"@types/node@npm:*": version: 22.10.1 resolution: "@types/node@npm:22.10.1" dependencies: @@ -1420,6 +1433,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^22.10.2": + version: 22.10.2 + resolution: "@types/node@npm:22.10.2" + dependencies: + undici-types: "npm:~6.20.0" + checksum: 10c0/2c7b71a040f1ef5320938eca8ebc946e6905caa9bbf3d5665d9b3774a8d15ea9fab1582b849a6d28c7fc80756a62c5666bc66b69f42f4d5dafd1ccb193cdb4ac + languageName: node + linkType: hard + "@types/parse-json@npm:^4.0.0": version: 4.0.2 resolution: "@types/parse-json@npm:4.0.2" @@ -1427,19 +1449,26 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*, @types/prop-types@npm:^15.7.13": +"@types/prop-types@npm:*": version: 15.7.13 resolution: "@types/prop-types@npm:15.7.13" checksum: 10c0/1b20fc67281902c6743379960247bc161f3f0406ffc0df8e7058745a85ea1538612109db0406290512947f9632fe9e10e7337bf0ce6338a91d6c948df16a7c61 languageName: node linkType: hard -"@types/react-dom@npm:^18.3.1": - version: 18.3.1 - resolution: "@types/react-dom@npm:18.3.1" - dependencies: - "@types/react": "npm:*" - checksum: 10c0/8b416551c60bb6bd8ec10e198c957910cfb271bc3922463040b0d57cf4739cdcd24b13224f8d68f10318926e1ec3cd69af0af79f0291b599a992f8c80d47f1eb +"@types/prop-types@npm:^15.7.14": + version: 15.7.14 + resolution: "@types/prop-types@npm:15.7.14" + checksum: 10c0/1ec775160bfab90b67a782d735952158c7e702ca4502968aa82565bd8e452c2de8601c8dfe349733073c31179116cf7340710160d3836aa8a1ef76d1532893b1 + languageName: node + linkType: hard + +"@types/react-dom@npm:^19.0.2": + version: 19.0.2 + resolution: "@types/react-dom@npm:19.0.2" + peerDependencies: + "@types/react": ^19.0.0 + checksum: 10c0/3d0c7b78dbe8df64ea769f30af990a5950173a8321c745fe11094d765423f7964c3519dca6e7cd36b4be6521c8efc690bdd3b79b327b229dd1e9d5a8bad677dd languageName: node linkType: hard @@ -1462,13 +1491,12 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.3.13": - version: 18.3.13 - resolution: "@types/react@npm:18.3.13" +"@types/react@npm:^19.0.1": + version: 19.0.1 + resolution: "@types/react@npm:19.0.1" dependencies: - "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10c0/91815e00157deb179fa670aa2dfc491952698b7743ffddca0e3e0f16e7a18454f3f5ef72321a07386c49e721563b9d280dbbdfae039face764e2fdd8ad949d4b + checksum: 10c0/25eb69114abb9a6d5fc4414ee584388275bbc9ac32976449cf58b95fe9880efe6b3f936c3842be9bed8c571546a9752e8d3e2095288381e9c809269f5f574f2e languageName: node linkType: hard @@ -1490,15 +1518,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.17.0" +"@typescript-eslint/eslint-plugin@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.18.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.17.0" - "@typescript-eslint/type-utils": "npm:8.17.0" - "@typescript-eslint/utils": "npm:8.17.0" - "@typescript-eslint/visitor-keys": "npm:8.17.0" + "@typescript-eslint/scope-manager": "npm:8.18.0" + "@typescript-eslint/type-utils": "npm:8.18.0" + "@typescript-eslint/utils": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -1506,108 +1534,99 @@ __metadata: peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/d78778173571a9a1370345bc2aa3e850235a489d16b8a8b5ba3086b988bbef7549bdae38e509d7a679ba3179c688cc5a408376b158be402770836e94ffc9602d + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/c338da1b96c41d7b94401a6711659d0fef3acb691eff7a958f9d3aa0442a858830daad67e3575288a4f4669572e2b690517a513519b404a465ad68fe0a82d3ec languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/parser@npm:8.17.0" +"@typescript-eslint/parser@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/parser@npm:8.18.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.17.0" - "@typescript-eslint/types": "npm:8.17.0" - "@typescript-eslint/typescript-estree": "npm:8.17.0" - "@typescript-eslint/visitor-keys": "npm:8.17.0" + "@typescript-eslint/scope-manager": "npm:8.18.0" + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/typescript-estree": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/2543deadf01302a92d3b6f58a4c14f98d8936c4d976e7da05e3bb65608f19d8de93b25282e343c304eca3e3f37f2ac23e97fa9c11c6edff36dd2d4f6b601a630 + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/d3a062511c24dfcf522a645db1153022d49aa3bb05e288c22474cf04dc1d836f877eb9d2733947e448981ffb16e4de50d4ebe7570a268733a641f228ca6c4849 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/scope-manager@npm:8.17.0" +"@typescript-eslint/scope-manager@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/scope-manager@npm:8.18.0" dependencies: - "@typescript-eslint/types": "npm:8.17.0" - "@typescript-eslint/visitor-keys": "npm:8.17.0" - checksum: 10c0/0c08d14240bad4b3f6874f08ba80b29db1a6657437089a6f109db458c544d835bcdc06ba9140bb4f835233ba4326d9a86e6cf6bdb5209960d2f7025aa3191f4f + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" + checksum: 10c0/6bf6532fd43f2b55b9b47fa8b0217c5b5a03f022e869a6a21228fc3ae04c0ac6c5ae5d6026866d189ba424d2f98cc6fbd2a34f909d241c9b86c031afd808f90c languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/type-utils@npm:8.17.0" +"@typescript-eslint/type-utils@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/type-utils@npm:8.18.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.17.0" - "@typescript-eslint/utils": "npm:8.17.0" + "@typescript-eslint/typescript-estree": "npm:8.18.0" + "@typescript-eslint/utils": "npm:8.18.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/6138ec71b5692d4b5e0bf3d7f66a6fa4e91ddea7031907b0ac45a7693df0a2f4cc5bca7218311e0639620d636ceb7efec83a137dfcd5938304d873b774fcc8bd + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/c0fcf201c3b53f9374c0571198a639c81536170141caa08fd0f47094a596b1f82f839a849eac5832f954345c567dccb45b2ee1c0872c513331165f7bcb812396 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/types@npm:8.17.0" - checksum: 10c0/26b1bf9dfc3ee783c85c6f354b84c28706d5689d777f3ff2de2cb496e45f9d0189c0d561c03ccbc8b24712438be17cf63dd0871ff3ca2083e7f48749770d1893 +"@typescript-eslint/types@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/types@npm:8.18.0" + checksum: 10c0/2dd7468c3f1c305545268b72c3a333488e6ab1b628c5f65081d895866422b9376c21634a7aac437805f84b22e352b6a8fc4dcf925ef4a8fd7d1898b8359f71be languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.17.0" +"@typescript-eslint/typescript-estree@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.18.0" dependencies: - "@typescript-eslint/types": "npm:8.17.0" - "@typescript-eslint/visitor-keys": "npm:8.17.0" + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" minimatch: "npm:^9.0.4" semver: "npm:^7.6.0" ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/523013f9b5cf2c58c566868e4c3b0b9ac1b4807223a6d64e2a7c58e01e53b6587ba61f1a8241eade361f3f426d6057657515473176141ef8aebb352bc0d223ce + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/87b432b190b627314f007b17b2371898db78baaa3df67a0d9a94d080d88a7a307906b54a735084cacef37f6421e2b9c3320040617e73fe54eac2bf22c610f1ec languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/utils@npm:8.17.0" +"@typescript-eslint/utils@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/utils@npm:8.18.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.17.0" - "@typescript-eslint/types": "npm:8.17.0" - "@typescript-eslint/typescript-estree": "npm:8.17.0" + "@typescript-eslint/scope-manager": "npm:8.18.0" + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/typescript-estree": "npm:8.18.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/a9785ae5f7e7b51d521dc3f48b15093948e4fcd03352c0b60f39bae366cbc935947d215f91e2ae3182d52fa6affb5ccbb50feff487bd1209011f3e0da02cdf07 + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/58a2fc1e404d1f905c2a958d995824eb4abc6e73836b186717550677f8b1d17954acc369feddb83277350915388bc3d8b721423c37777b8b8017fc29c89ec6ee languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.17.0" +"@typescript-eslint/visitor-keys@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.18.0" dependencies: - "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/types": "npm:8.18.0" eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/9144c4e4a63034fb2031a0ee1fc77e80594f30cab3faafa9a1f7f83782695774dd32fac8986f260698b4e150b4dd52444f2611c07e4c101501f08353eb47c82c + checksum: 10c0/d4cdc2adab553098b5be7117fb7df76fb66cfd380528881a0a8c2a9eee03bf8baddda07d15ca0bd3ed8b35c379b3f449292183df18e3e81898dbcadafcb708b8 languageName: node linkType: hard @@ -1617,19 +1636,19 @@ __metadata: dependencies: "@alova/adapter-xhr": "npm:2.0.11" "@babel/core": "npm:^7.26.0" - "@emotion/react": "npm:^11.13.5" - "@emotion/styled": "npm:^11.13.5" + "@emotion/react": "npm:^11.14.0" + "@emotion/styled": "npm:^11.14.0" "@eslint/js": "npm:^9.16.0" - "@mui/icons-material": "npm:^6.1.10" - "@mui/material": "npm:^6.1.10" + "@mui/icons-material": "npm:^6.2.0" + "@mui/material": "npm:^6.2.0" "@preact/compat": "npm:^18.3.1" - "@preact/preset-vite": "npm:^2.9.2" + "@preact/preset-vite": "npm:^2.9.3" "@table-library/react-table-library": "npm:4.1.7" - "@trivago/prettier-plugin-sort-imports": "npm:^5.0.1" + "@trivago/prettier-plugin-sort-imports": "npm:^5.2.0" "@types/formidable": "npm:^3" - "@types/node": "npm:^22.10.1" - "@types/react": "npm:^18.3.13" - "@types/react-dom": "npm:^18.3.1" + "@types/node": "npm:^22.10.2" + "@types/react": "npm:^19.0.1" + "@types/react-dom": "npm:^19.0.2" alova: "npm:3.2.6" async-validator: "npm:^4.2.5" concurrently: "npm:^9.1.0" @@ -1638,7 +1657,7 @@ __metadata: formidable: "npm:^3.5.2" jwt-decode: "npm:^4.0.0" mime-types: "npm:^2.1.35" - preact: "npm:^10.25.1" + preact: "npm:^10.25.2" prettier: "npm:^3.4.2" react: "npm:^19.0.0" react-dom: "npm:^19.0.0" @@ -1649,10 +1668,10 @@ __metadata: terser: "npm:^5.37.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.7.2" - typescript-eslint: "npm:8.17.0" + typescript-eslint: "npm:8.18.0" vite: "npm:^6.0.3" vite-plugin-imagemin: "npm:^0.6.1" - vite-tsconfig-paths: "npm:^5.1.3" + vite-tsconfig-paths: "npm:^5.1.4" languageName: unknown linkType: soft @@ -5515,10 +5534,10 @@ __metadata: languageName: node linkType: hard -"preact@npm:^10.25.1": - version: 10.25.1 - resolution: "preact@npm:10.25.1" - checksum: 10c0/bc9255b20931781ed4b26f9d294ba2ec433dc6df8248d802a82a32b3841eb64cd5a70948a814f3793eb9eae7f95a556ec5573b63c62221534533a26db6a71fcb +"preact@npm:^10.25.2": + version: 10.25.2 + resolution: "preact@npm:10.25.2" + checksum: 10c0/03eb73164eb49a77c62cead2b9a951aa8bca39ccad58257f94353404b280465c60580c7bf32a3d44c8c24b24d7974c6db9807bafa69a6fc5dc9cdbd9a0e0df30 languageName: node linkType: hard @@ -5670,10 +5689,10 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.3.1": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 +"react-is@npm:^19.0.0": + version: 19.0.0 + resolution: "react-is@npm:19.0.0" + checksum: 10c0/d1be8e8500cf04f76df71942a21ef3a71266397a383d7ec8885f35190df818d35c65efd35aed7be47a89ad99aaff2c52e0c4e39e8930844a6b997622e50625a8 languageName: node linkType: hard @@ -6694,19 +6713,17 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.17.0": - version: 8.17.0 - resolution: "typescript-eslint@npm:8.17.0" +"typescript-eslint@npm:8.18.0": + version: 8.18.0 + resolution: "typescript-eslint@npm:8.18.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.17.0" - "@typescript-eslint/parser": "npm:8.17.0" - "@typescript-eslint/utils": "npm:8.17.0" + "@typescript-eslint/eslint-plugin": "npm:8.18.0" + "@typescript-eslint/parser": "npm:8.18.0" + "@typescript-eslint/utils": "npm:8.18.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/b148525769b9afa789ad3c2d52249fa78e67a225d48d17f2f0117b0e8b52566112be3a35de6cd26bcaffba3114be87c1070f7f4b4e2b730c059668fec4a530bc + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/dda882cbfc1ebad6903864571bc69bfd7e32e17fec67d98fdfab2bd652348d425c6a1c3697734d59cd5dd15d26d496db3c3808c1de5840fa29b9e76184fa1865 languageName: node linkType: hard @@ -6879,9 +6896,9 @@ __metadata: languageName: node linkType: hard -"vite-tsconfig-paths@npm:^5.1.3": - version: 5.1.3 - resolution: "vite-tsconfig-paths@npm:5.1.3" +"vite-tsconfig-paths@npm:^5.1.4": + version: 5.1.4 + resolution: "vite-tsconfig-paths@npm:5.1.4" dependencies: debug: "npm:^4.1.1" globrex: "npm:^0.1.2" @@ -6891,7 +6908,7 @@ __metadata: peerDependenciesMeta: vite: optional: true - checksum: 10c0/fb7480efa31fd50439f4a12c91bc953e5cc09d69fdc7eeb6ffff7cc796bc2c1f2c617c3abfdcbf5d7414848076cea9deb60bc002142f93b6e3131e5458760710 + checksum: 10c0/6228f23155ea25d92b1e1702284cf8dc52ad3c683c5ca691edd5a4c82d2913e7326d00708cef1cbfde9bb226261df0e0a12e03ef1d43b6a92d8f02b483ef37e3 languageName: node linkType: hard diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index b233911f9..cc7da3808 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -172,10 +172,16 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(0x31E, "RC300WWmode2", false, MAKE_PF_CB(process_RC300WWmode2)); register_telegram_type(0x23A, "RC300OutdoorTemp", true, MAKE_PF_CB(process_RC300OutdoorTemp)); register_telegram_type(0x267, "RC300Floordry", false, MAKE_PF_CB(process_RC300Floordry)); - register_telegram_type(0x240, "RC300Settings", true, MAKE_PF_CB(process_RC300Settings)); + if (model == EMSdevice::EMS_DEVICE_FLAG_RC100) { + register_telegram_type(0x241, "RC300Settings", true, MAKE_PF_CB(process_RC300Settings)); + } else { + register_telegram_type(0x240, "RC300Settings", true, MAKE_PF_CB(process_RC300Settings)); + } + register_telegram_type(0xBB, "HybridSettings", true, MAKE_PF_CB(process_HybridSettings)); register_telegram_type(0x23E, "PVSettings", true, MAKE_PF_CB(process_PVSettings)); register_telegram_type(0x269, "RC300Holiday1", true, MAKE_PF_CB(process_RC300Holiday)); + register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent)); // JUNKERS/HT3 } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { @@ -1013,6 +1019,11 @@ void Thermostat::process_PVSettings(std::shared_ptr telegram) { has_update(telegram, pvLowerCool_, 5); } +// 0x16E Absent settings - hc or dhw or devcie_data? #1957 +void Thermostat::process_Absent(std::shared_ptr telegram) { + has_update(telegram, absent_, 0); +} + void Thermostat::process_JunkersSetMixer(std::shared_ptr telegram) { auto hc = heating_circuit(telegram); if (hc == nullptr) { @@ -1126,6 +1137,7 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { has_update(telegram, hc->noreducetemp, 12); has_update(telegram, hc->remoteseltemp, 17); // see https://github.com/emsesp/EMS-ESP32/issues/590 has_enumupdate(telegram, hc->switchProgMode, 19, 1); // 1-level, 2-absolute + has_update(telegram, hc->redThreshold, 20); has_update(telegram, hc->boost, 23); has_update(telegram, hc->boosttime, 24); has_update(telegram, hc->cooling, 28); @@ -1272,13 +1284,14 @@ void Thermostat::process_RC300OutdoorTemp(std::shared_ptr telegr has_update(telegram, dampedoutdoortemp2_, 0); // is *10 } -// 0x240 RC300 parameter +// 0x240 RC300 parameter, 0x0241 for CW100, see https://github.com/emsesp/EMS-ESP32/issues/2290 // RC300Settings(0x240), data: 26 00 03 00 00 00 00 00 FF 01 F6 06 FF 00 00 00 00 00 00 00 00 00 00 void Thermostat::process_RC300Settings(std::shared_ptr telegram) { has_update(telegram, ibaCalIntTemperature_, 7); has_update(telegram, ibaDamping_, 8); has_enumupdate(telegram, ibaBuildingType_, 9, 1); // 1=light, 2=medium, 3=heavy has_update(telegram, ibaMinExtTemperature_, 10); + has_update(telegram, hasSolar_, 13); } // 0x2CC - e.g. wwprio for RC310 hcx parameter @@ -1857,7 +1870,9 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) { write_command(0xAD, 14, mt, 0xAD); - } else if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { + write_command(0x241, 10, mt, 0x241); + } else if (isRC300()) { write_command(0x240, 10, mt, 0x240); } else { write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); @@ -1898,7 +1913,9 @@ bool Thermostat::set_calinttemp(const char * value, const int8_t id) { write_command(EMS_TYPE_RC30Settings, 1, t, EMS_TYPE_RC30Settings); } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100H) { write_command(0x273, 0, t, 0x273); - } else if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { + write_command(0x241, 7, t, 0x241); + } else if (isRC300()) { write_command(0x240, 7, t, 0x240); } else { write_command(EMS_TYPE_IBASettings, 2, t, EMS_TYPE_IBASettings); @@ -2006,7 +2023,9 @@ bool Thermostat::set_building(const char * value, const int8_t id) { return false; } - if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { + write_command(0x241, 9, bd + 1, 0x241); + } else if (isRC300()) { write_command(0x240, 9, bd + 1, 0x240); } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 4, bd, EMS_TYPE_RC30Settings); @@ -2036,16 +2055,29 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) { // 0xA5 and 0x0240- Set the damping settings bool Thermostat::set_damping(const char * value, const int8_t id) { bool dmp; - if (isRC300()) { - if (Helpers::value2bool(value, dmp)) { + if (Helpers::value2bool(value, dmp)) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { + write_command(0x241, 8, dmp ? 0xFF : 0, 0x241); + } else if (isRC300()) { write_command(0x240, 8, dmp ? 0xFF : 0, 0x240); - return true; - } - } else { - if (Helpers::value2bool(value, dmp)) { + } else { write_command(EMS_TYPE_IBASettings, 21, dmp ? 0xFF : 0, EMS_TYPE_IBASettings); - return true; } + return true; + } + return false; +} + +// 0x0241- Set solar +bool Thermostat::set_solar(const char * value, const int8_t id) { + bool b; + if (Helpers::value2bool(value, b)) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { + write_command(0x241, 13, b ? 0xFF : 0, 0x241); + } else { + write_command(0x240, 13, b ? 0xFF : 0, 0x240); + } + return true; } return false; } @@ -2700,6 +2732,29 @@ bool Thermostat::set_party(const char * value, const int8_t id) { return true; } +bool Thermostat::set_absent(const char * value, const int8_t id) { + bool b; + if (Helpers::value2bool(value, b)) { + write_command(0x16E, 0, b ? 0xFF : 0, 0x16E); + return true; + } + return false; +} + +bool Thermostat::set_redthreshold(const char * value, const int8_t id) { + auto hc = heating_circuit(id); + if (hc == nullptr) { + return false; + } + float t; + if (Helpers::value2temperature(value, t)) { + write_command(set_typeids[hc->hc()], 20, (int8_t)(t * 2), set_typeids[hc->hc()]); + return true; + } + return false; +} + + // set date&time as string dd.mm.yyyy-hh:mm:ss-dw-dst or "NTP" for setting to internet-time // dw - day of week (0..6), dst- summertime (0/1) // id is ignored @@ -4103,6 +4158,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::DEGREES, MAKE_CF_CB(set_minexttemp)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaDamping_, DeviceValueType::BOOL, FL_(damping), DeviceValueUOM::NONE, MAKE_CF_CB(set_damping)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hasSolar_, DeviceValueType::BOOL, FL_(hasSolar), DeviceValueUOM::NONE, MAKE_CF_CB(set_solar)); if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &vacation[0], @@ -4175,6 +4231,7 @@ void Thermostat::register_device_values() { DeviceValueTAG::TAG_DEVICE_DATA, &pvRaiseHeat_, DeviceValueType::INT8, FL_(pvRaiseHeat), DeviceValueUOM::K, MAKE_CF_CB(set_pvRaiseHeat), 0, 5); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &pvLowerCool_, DeviceValueType::INT8, FL_(pvLowerCool), DeviceValueUOM::K, MAKE_CF_CB(set_pvLowerCool), -5, 0); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &absent_, DeviceValueType::BOOL, FL_(absent), DeviceValueUOM::NONE, MAKE_CF_CB(set_absent)); break; case EMSdevice::EMS_DEVICE_FLAG_RC10: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, @@ -4612,6 +4669,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrredThreshold, DeviceValueType::INT8, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(redthreshold), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_redthreshold)); break; case EMSdevice::EMS_DEVICE_FLAG_CRF: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode5), FL_(mode), DeviceValueUOM::NONE); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 0b01687a9..d12821da1 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -87,6 +87,7 @@ class Thermostat : public EMSdevice { uint8_t switchonoptimization; uint8_t statusbyte; // from RC300monitor uint8_t switchProgMode; + int8_t redThreshold; // RC 10 uint8_t reducehours; // night reduce duration uint16_t reduceminutes; // remaining minutes to night->day @@ -278,6 +279,8 @@ class Thermostat : public EMSdevice { uint8_t battery_; char vacation[8][22]; // RC30, R3000 only, only one hc + uint8_t absent_; + uint8_t hasSolar_; // HybridHP uint8_t hybridStrategy_; // co2 = 1, cost = 2, temperature = 3, mix = 4 @@ -446,6 +449,7 @@ class Thermostat : public EMSdevice { void process_JunkersRemoteMonitor(std::shared_ptr telegram); void process_HybridSettings(std::shared_ptr telegram); void process_PVSettings(std::shared_ptr telegram); + void process_Absent(std::shared_ptr telegram); void process_JunkersSetMixer(std::shared_ptr telegram); void process_JunkersWW(std::shared_ptr telegram); void process_RemoteTemp(std::shared_ptr telegram); @@ -625,6 +629,7 @@ class Thermostat : public EMSdevice { bool set_display(const char * value, const int8_t id); bool set_building(const char * value, const int8_t id); bool set_damping(const char * value, const int8_t id); + bool set_solar(const char * value, const int8_t id); bool set_language(const char * value, const int8_t id); bool set_heatingtype(const char * value, const int8_t id); bool set_reducehours(const char * value, const int8_t id); @@ -656,6 +661,8 @@ class Thermostat : public EMSdevice { bool set_coolondelay(const char * value, const int8_t id); bool set_cooloffdelay(const char * value, const int8_t id); bool set_switchProgMode(const char * value, const int8_t id); + bool set_absent(const char * value, const int8_t id); + bool set_redthreshold(const char * value, const int8_t id); }; } // namespace emsesp diff --git a/src/locale_translations.h b/src/locale_translations.h index 01cc33d5f..9e2d9c4ff 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -676,6 +676,7 @@ MAKE_TRANSLATION(mixingvalves, "mixingvalves", "mixing valves", "Mischventile", MAKE_TRANSLATION(pvEnableWw, "pvenabledhw", "enable raise dhw", "aktiviere WW-Anhebung", "Verhoging WW activeren", "", "podwyższenie c.w.u. z PV", "aktivere hevet temperatur bereder", "", "sıcak kullanım suyu yükseltmeyi etkinleştir", "abilitare aumento ACS", "povoliť zvýšenie TÚV", "povolit zvýšení TUV") // TODO translate MAKE_TRANSLATION(pvRaiseHeat, "pvraiseheat", "raise heating with PV", "Anhebung Heizen mit PV", "Verwarmen met PV activeren", "", "podwyższenie grzania z PV", "heve varmen med solpanel", "", "ısıtmayı G.E. İle yükselt", "Aumentare il riscaldamento con il solare", "zvýšiť kúrenie s FV", "zvýšení vytápění s FV") // TODO translate MAKE_TRANSLATION(pvLowerCool, "pvlowercool", "lower cooling with PV", "Absenkung Kühlen mit PV", "Verlagen koeling met PV activeren", "", "obniżenie chłodzenia z PV", "nedre kjøling solpanel", "", "soğutmayı G.E. İle düşür", "Riduzione del raffreddamento con il solare", "nižšie chladenie s PV", "snížení chlazení s FV") // TODO translate +MAKE_TRANSLATION(hasSolar, "solar", "solar", "Solar", "", "", "", "", "", "", "", "", "") // TODO translate // thermostat dhw MAKE_TRANSLATION(wwMode, "mode", "operating mode", "Betriebsart", "Modus", "Läge", "tryb pracy", "modus", "mode", "mod", "modalità", "režim", "provozní režim") @@ -759,6 +760,8 @@ MAKE_TRANSLATION(vacations5, "vacations5", "vacation dates 5", "Urlaubstage 5", MAKE_TRANSLATION(vacations6, "vacations6", "vacation dates 6", "Urlaubstage 6", "Vakantiedagen 6", "Semesterdatum 6", "urlop 6", "feriedager 6", "dates vacances 6", "izin günleri 6", "date vacanze 6", "termíny dovolenky 6", "data prázdnin 6") MAKE_TRANSLATION(vacations7, "vacations7", "vacation dates 7", "Urlaubstage 7", "Vakantiedagen 7", "Semesterdatum 7", "urlop 7", "feriedager 7", "dates vacances 7", "izin günleri 7", "date vacanze 7", "termíny dovolenky 7", "data prázdnin 7") MAKE_TRANSLATION(vacations8, "vacations8", "vacation dates 8", "Urlaubstage 8", "Vakantiedagen 8", "Semesterdatum 8", "urlop 8", "feriedager 8", "dates vacances 8", "izin günleri 8", "date vacanze 8", "termíny dovolenky 8", "data prázdnin 8") +MAKE_TRANSLATION(absent, "absent", "absent", "Abwesend", "", "", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(redthreshold, "redthreshold", "reduction threshold", "Absenkschwelle", "", "", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(hpmode, "hpmode", "HP Mode", "WP-Modus", "Modus warmtepomp", "", "tryb pracy pompy ciepła", "", "", "yüksek güç modu", "Modalità Termopompa", "Režim TČ", "režim tepelného čerpadla") // TODO translate MAKE_TRANSLATION(dewoffset, "dewoffset", "dew point offset", "Taupunktdifferenz", "Offset dauwpunt", "", "przesunięcie punktu rosy", "", "", "çiğ noktası göreli", "differenza del punto di rugiada", "posun rosného bodu", "offset rosného bodu") // TODO translate diff --git a/src/version.h b/src/version.h index 075b79798..4d2245b33 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.7.2-dev.4" \ No newline at end of file +#define EMSESP_APP_VERSION "3.7.2-dev.5" \ No newline at end of file