From 87c9fd010fb69c4cab032a80e7162de690ace6ce Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Jan 2026 19:49:01 +0100 Subject: [PATCH 001/162] v3.8.2 --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ CHANGELOG_LATEST.md | 22 +--------------------- src/emsesp_version.h | 2 +- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6314e7c64..156bffd65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.8.1] 11 January 2026 + +## Added + +- update time saved in nvs +- heatpump entities [#2883](https://github.com/emsesp/EMS-ESP32/issues/2883) +- HA input number format (mode) selectable box/slider (slider for max range 100) [#2900](https://github.com/emsesp/EMS-ESP32/discussions/2900) + +## Fixed + +- fix EMS bus disconnected errors on some systems [#2881](https://github.com/emsesp/EMS-ESP32/issues/2881) +- selflowtemp fix [#2876](https://github.com/emsesp/EMS-ESP32/issues/2876) +- updated valid GPIOs for ESP32S2, ESP32S3 and ESP32 that caused custom systems to block gpios [#2887](https://github.com/emsesp/EMS-ESP32/issues/2887) +- Junkers wwcharge offset [#2860](https://github.com/emsesp/EMS-ESP32/issues/2860) +- fixed minflowtemp [#2890](https://github.com/emsesp/EMS-ESP32/issues/2890) +- don't add HA uom/classes for bool values [#2885](https://github.com/emsesp/EMS-ESP32/issues/2885) +- fixed missing progress bar on web firmware uploads + +## Changed + +- snapshot gpios stored in temporary ram +- GPIOs stored along with the name and reported in log if conflicting +- free GPIOs depend on board profile [#2901](https://github.com/emsesp/EMS-ESP32/issues/2901) +- prefer PSram for mqtt queue [#2889](https://github.com/emsesp/EMS-ESP32/issues/2889) +- day schedule defult to all days, no day selected is not allowed +- board profile `CUSTOM` can only be selected in developer mode +- mqtt sends round values without decimals (`28` instead of `28.0`) + + ## [3.8.0] 31 December 2025 ## Added diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index b8ca89838..d08fbd934 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -2,30 +2,10 @@ For more details go to [emsesp.org](https://emsesp.org/). -## [3.8.1] +## [3.8.2] ## Added -- update time saved in nvs -- heatpump entities [#2883](https://github.com/emsesp/EMS-ESP32/issues/2883) -- HA input number format (mode) selectable box/slider (slider for max range 100) [#2900](https://github.com/emsesp/EMS-ESP32/discussions/2900) - ## Fixed -- fix EMS bus disconnected errors on some systems [#2881](https://github.com/emsesp/EMS-ESP32/issues/2881) -- selflowtemp fix [#2876](https://github.com/emsesp/EMS-ESP32/issues/2876) -- updated valid GPIOs for ESP32S2, ESP32S3 and ESP32 that caused custom systems to block gpios [#2887](https://github.com/emsesp/EMS-ESP32/issues/2887) -- Junkers wwcharge offset [#2860](https://github.com/emsesp/EMS-ESP32/issues/2860) -- fixed minflowtemp [#2890](https://github.com/emsesp/EMS-ESP32/issues/2890) -- don't add HA uom/classes for bool values [#2885](https://github.com/emsesp/EMS-ESP32/issues/2885) -- fixed missing progress bar on web firmware uploads - ## Changed - -- snapshot gpios stored in temporary ram -- GPIOs stored along with the name and reported in log if conflicting -- free GPIOs depend on board profile [#2901](https://github.com/emsesp/EMS-ESP32/issues/2901) -- prefer PSram for mqtt queue [#2889](https://github.com/emsesp/EMS-ESP32/issues/2889) -- day schedule defult to all days, no day selected is not allowed -- board profile `CUSTOM` can only be selected in developer mode -- mqtt sends round values without decimals (`28` instead of `28.0`) diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 543e41baf..f352db534 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.1-dev.8" +#define EMSESP_APP_VERSION "3.8.2-dev.0" From bc7f82eef193edbefb8c6a61855c0b65bbf15957 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 18 Jan 2026 12:36:20 +0000 Subject: [PATCH 002/162] package update --- interface/package.json | 10 +- interface/pnpm-lock.yaml | 460 +++++++++++++++++++-------------------- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 82 +++---- 4 files changed, 277 insertions(+), 277 deletions(-) diff --git a/interface/package.json b/interface/package.json index 87005f6d9..2f170ed3b 100644 --- a/interface/package.json +++ b/interface/package.json @@ -47,22 +47,22 @@ "typescript": "^5.9.3" }, "devDependencies": { - "@babel/core": "^7.28.5", + "@babel/core": "^7.28.6", "@eslint/js": "^9.39.2", "@preact/compat": "^18.3.1", "@preact/preset-vite": "^2.10.2", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.0.6", + "@types/node": "^25.0.9", "@types/react": "^19.2.8", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", "concurrently": "^9.2.1", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "rollup-plugin-visualizer": "^6.0.5", - "terser": "^5.44.1", - "typescript-eslint": "^8.52.0", + "terser": "^5.46.0", + "typescript-eslint": "^8.53.0", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.0.4" diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index a46d81557..37a101f1c 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -76,20 +76,20 @@ importers: version: 5.9.3 devDependencies: '@babel/core': - specifier: ^7.28.5 - version: 7.28.5 + specifier: ^7.28.6 + version: 7.28.6 '@eslint/js': specifier: ^9.39.2 version: 9.39.2 '@preact/preset-vite': specifier: ^2.10.2 - version: 2.10.2(@babel/core@7.28.5)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)) + version: 2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.7.4) + version: 6.0.2(prettier@3.8.0) '@types/node': - specifier: ^25.0.6 - version: 25.0.6 + specifier: ^25.0.9 + version: 25.0.9 '@types/react': specifier: ^19.2.8 version: 19.2.8 @@ -109,26 +109,26 @@ importers: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2) prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 rollup-plugin-visualizer: specifier: ^6.0.5 version: 6.0.5(rollup@4.55.1) terser: - specifier: ^5.44.1 - version: 5.44.1 + specifier: ^5.46.0 + version: 5.46.0 typescript-eslint: - specifier: ^8.52.0 - version: 8.52.0(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.53.0 + version: 8.53.0(eslint@9.39.2)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.0.6)(terser@5.44.1) + version: 7.3.1(@types/node@25.0.9)(terser@5.46.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)) + version: 0.6.1(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) vite-tsconfig-paths: specifier: ^6.0.4 - version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)) + version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) packages: @@ -140,46 +140,46 @@ packages: '@alova/shared@1.3.2': resolution: {integrity: sha512-1XvDLWgYpVZ99MmLl1f3Fw4T6S6pPYk5afz5cwRVjuq8JXEGsDn9IygDKfvRyWqkqCBx7Jif07LIct1O+MVEow==} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + '@babel/compat-data@7.28.6': + resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + '@babel/core@7.28.6': + resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.27.1': @@ -194,17 +194,17 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -215,26 +215,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} '@emotion/babel-plugin@11.13.5': @@ -875,8 +875,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.0.6': - resolution: {integrity: sha512-NNu0sjyNxpoiW3YuVFfNz7mxSQ+S4X2G28uqg2s+CzoqoQjLPsWSbsFFyztIAqt2vb8kfEAsJNepMGPTxFDx3Q==} + '@types/node@25.0.9': + resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -903,63 +903,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.52.0': - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + '@typescript-eslint/eslint-plugin@8.53.0': + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.52.0': - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + '@typescript-eslint/parser@8.53.0': + resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.52.0': - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + '@typescript-eslint/project-service@8.53.0': + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.52.0': - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + '@typescript-eslint/scope-manager@8.53.0': + resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.52.0': - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + '@typescript-eslint/tsconfig-utils@8.53.0': + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.52.0': - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + '@typescript-eslint/type-utils@8.53.0': + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.52.0': - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + '@typescript-eslint/types@8.53.0': + resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.52.0': - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + '@typescript-eslint/typescript-estree@8.53.0': + resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.52.0': - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + '@typescript-eslint/utils@8.53.0': + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.52.0': - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + '@typescript-eslint/visitor-keys@8.53.0': + resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1042,8 +1042,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.14: - resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} + baseline-browser-mapping@2.9.15: + resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==} hasBin: true bin-build@3.0.0: @@ -2490,8 +2490,8 @@ packages: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.0: + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} engines: {node: '>=14'} hasBin: true @@ -2863,8 +2863,8 @@ packages: resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==} engines: {node: '>=4'} - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -2939,8 +2939,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.52.0: - resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} + typescript-eslint@8.53.0: + resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3051,8 +3051,8 @@ packages: yaml: optional: true - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} which@1.3.1: @@ -3117,25 +3117,25 @@ snapshots: '@alova/shared@1.3.2': {} - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.28.6': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.5': {} + '@babel/compat-data@7.28.6': {} - '@babel/core@7.28.5': + '@babel/core@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -3145,21 +3145,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.5': + '@babel/generator@7.28.6': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.28.6 '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.1 lru-cache: 5.1.1 @@ -3167,23 +3167,23 @@ snapshots: '@babel/helper-globals@7.28.0': {} - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.28.6': {} '@babel/helper-string-parser@7.27.1': {} @@ -3191,67 +3191,67 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.28.4': + '@babel/helpers@7.28.6': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 - '@babel/parser@7.28.5': + '@babel/parser@7.28.6': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/types': 7.28.5 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/runtime@7.28.4': {} + '@babel/runtime@7.28.6': {} - '@babel/template@7.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - '@babel/traverse@7.28.5': + '@babel/traverse@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.5': + '@babel/types@7.28.6': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 '@emotion/babel-plugin@11.13.5': dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.28.4 + '@babel/helper-module-imports': 7.28.6 + '@babel/runtime': 7.28.6 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -3282,7 +3282,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -3308,7 +3308,7 @@ snapshots: '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3) @@ -3503,7 +3503,7 @@ snapshots: '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 optionalDependencies: @@ -3511,7 +3511,7 @@ snapshots: '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@mui/core-downloads-tracker': 7.3.7 '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3) '@mui/types': 7.4.10(@types/react@19.2.8) @@ -3532,7 +3532,7 @@ snapshots: '@mui/private-theming@7.3.7(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@mui/utils': 7.3.7(@types/react@19.2.8)(react@19.2.3) prop-types: 15.8.1 react: 19.2.3 @@ -3541,7 +3541,7 @@ snapshots: '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 '@emotion/sheet': 1.4.0 @@ -3554,7 +3554,7 @@ snapshots: '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@mui/private-theming': 7.3.7(@types/react@19.2.8)(react@19.2.3) '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(react@19.2.3) '@mui/types': 7.4.10(@types/react@19.2.8) @@ -3570,13 +3570,13 @@ snapshots: '@mui/types@7.4.10(@types/react@19.2.8)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 optionalDependencies: '@types/react': 19.2.8 '@mui/utils@7.3.7(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@mui/types': 7.4.10(@types/react@19.2.8) '@types/prop-types': 15.7.15 clsx: 2.1.1 @@ -3610,18 +3610,18 @@ snapshots: dependencies: preact: 10.28.2 - '@preact/preset-vite@2.10.2(@babel/core@7.28.5)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0))': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5) - '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)) + '@babel/core': 7.28.6 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.6) + '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) '@rollup/pluginutils': 4.2.1 - babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.5) + babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.6) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)) + vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) transitivePeerDependencies: - preact - supports-color @@ -3634,15 +3634,15 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))': + '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0))': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@prefresh/babel-plugin': 0.5.2 '@prefresh/core': 1.5.9(preact@10.28.2) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.28.2 - vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1) + vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) transitivePeerDependencies: - supports-color @@ -3737,17 +3737,17 @@ snapshots: react-virtualized-auto-sizer: 1.0.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-window: 1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.7.4)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.0)': dependencies: - '@babel/generator': 7.28.5 - '@babel/parser': 7.28.5 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/generator': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 javascript-natural-sort: 0.7.1 lodash-es: 4.17.22 minimatch: 9.0.5 parse-imports-exports: 0.2.4 - prettier: 3.7.4 + prettier: 3.8.0 transitivePeerDependencies: - supports-color @@ -3758,7 +3758,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.0.6 + '@types/node': 25.0.9 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3787,19 +3787,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.0.6 + '@types/node': 25.0.9 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.0.6 + '@types/node': 25.0.9 '@types/minimatch@6.0.0': dependencies: minimatch: 10.1.1 - '@types/node@25.0.6': + '@types/node@25.0.9': dependencies: undici-types: 7.16.0 @@ -3821,20 +3821,20 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 25.0.6 + '@types/node': 25.0.9 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.0.6 + '@types/node': 25.0.9 - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/parser': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3843,41 +3843,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.52.0': + '@typescript-eslint/scope-manager@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 - '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3885,14 +3885,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.52.0': {} + '@typescript-eslint/types@8.53.0': {} - '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -3902,20 +3902,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.52.0': + '@typescript-eslint/visitor-keys@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint-visitor-keys: 4.2.1 acorn-jsx@5.3.2(acorn@8.15.0): @@ -3970,19 +3970,19 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 cosmiconfig: 7.1.0 resolve: 1.22.11 - babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.5): + babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.6): dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 balanced-match@1.0.2: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.9.14: {} + baseline-browser-mapping@2.9.15: {} bin-build@3.0.0: dependencies: @@ -4039,7 +4039,7 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.14 + baseline-browser-mapping: 2.9.15 caniuse-lite: 1.0.30001764 electron-to-chromium: 1.5.267 node-releases: 2.0.27 @@ -4312,7 +4312,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 csstype: 3.2.3 dom-serializer@1.4.1: @@ -5093,7 +5093,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 is-utf8@0.2.1: {} @@ -5432,7 +5432,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5505,7 +5505,7 @@ snapshots: prepend-http@2.0.0: {} - prettier@3.7.4: {} + prettier@3.8.0: {} process-nextick-args@2.0.1: {} @@ -5565,7 +5565,7 @@ snapshots: react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -5579,7 +5579,7 @@ snapshots: react-window@1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 memoize-one: 5.2.1 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) @@ -5875,7 +5875,7 @@ snapshots: temp-dir: 1.0.0 uuid: 3.4.0 - terser@5.44.1: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -5939,12 +5939,12 @@ snapshots: dependencies: typescript: 5.9.3 - typescript-eslint@8.52.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.53.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -5990,7 +5990,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6015,11 +6015,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1) + vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6027,20 +6027,20 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1) + vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) - vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)): + vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1) + vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.0.6)(terser@5.44.1): + vite@7.3.1(@types/node@25.0.9)(terser@5.46.0): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -6049,11 +6049,11 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.0.6 + '@types/node': 25.0.9 fsevents: 2.3.3 - terser: 5.44.1 + terser: 5.46.0 - which-typed-array@1.1.19: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 diff --git a/mock-api/package.json b/mock-api/package.json index d05239e7b..d384e9bb8 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -13,7 +13,7 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "formidable": "^3.5.4", "itty-router": "^5.0.22", - "prettier": "^3.7.4" + "prettier": "^3.8.0" }, "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index 5f50a949e..9bfb93058 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 3.1.3 '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.7.4) + version: 6.0.2(prettier@3.8.0) formidable: specifier: ^3.5.4 version: 3.5.4 @@ -21,17 +21,17 @@ importers: specifier: ^5.0.22 version: 5.0.22 prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 packages: - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.28.0': @@ -46,21 +46,21 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} '@jridgewell/gen-mapping@0.3.13': @@ -167,8 +167,8 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.0: + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} engines: {node: '>=14'} hasBin: true @@ -177,16 +177,16 @@ packages: snapshots: - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.28.6': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/generator@7.28.5': + '@babel/generator@7.28.6': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -197,29 +197,29 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': + '@babel/parser@7.28.6': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/template@7.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - '@babel/traverse@7.28.5': + '@babel/traverse@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.5': + '@babel/types@7.28.6': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 @@ -246,17 +246,17 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.7.4)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.0)': dependencies: - '@babel/generator': 7.28.5 - '@babel/parser': 7.28.5 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/generator': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 javascript-natural-sort: 0.7.1 lodash-es: 4.17.22 minimatch: 9.0.5 parse-imports-exports: 0.2.4 - prettier: 3.7.4 + prettier: 3.8.0 transitivePeerDependencies: - supports-color @@ -311,6 +311,6 @@ snapshots: picocolors@1.1.1: {} - prettier@3.7.4: {} + prettier@3.8.0: {} wrappy@1.0.2: {} From 01d4d116b9c2243c4adcddd362bac6acdc0f7a4f Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 18 Jan 2026 12:36:34 +0000 Subject: [PATCH 003/162] cspell updates --- cspell.json | 1 + project-words.txt | 972 ++++++++++++++++++++-------------------------- 2 files changed, 423 insertions(+), 550 deletions(-) diff --git a/cspell.json b/cspell.json index 880eedb9c..a0c028ab4 100644 --- a/cspell.json +++ b/cspell.json @@ -9,6 +9,7 @@ } ], "dictionaries": ["project-words"], + "caseSensitive": false, "ignorePaths": [ "node_modules", "compile_commands.json", diff --git a/project-words.txt b/project-words.txt index ea16610ce..5c880b0b8 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1,76 +1,71 @@ abluft -Abluft abluftfeuchte -Abluftfeuchtefühler +abluftfeuchtefühler abluftgebläse abluftqualität -Abluftqualitätsfühler -ABRT +abluftqualitätsfühler +abrt absburnpow accomodate aceotrope -ACTIVEHIGH -ACTIVELOW -Adafruit +activehigh +activelow +adafruit adde adress +ahsx +airbypass airhumidity airpurgemode airquality -Airquality -Ajcks -AKMP +ajcks +akmp aktivieren allvalues -ALLVALUES alova -Alova alphanum alse alternatingop altopprio altopprioheat +analogenabled analogsensor -ANALOGSENSOR analogsensors analyse -Anschlussvariante +anschlussvariante apicalls apifails apiflags -APIP -APIURL -APLL +apip +apiurl +apll appfree -APPSIZE +appsize appused -APSSID -APSTA -ARDUHAL +apssid +apsta +arduhal arduinojson -ARDUINOJSON -ARDUINOOTA -Arjan -Arlott -Arwed -ASSOCED -ASTATES +arduinoota +arjan +arlott +arwed +assoced +astates asym asymetric asyncesp -ASYNCEVENTSOURCE -ASYNCTCP -ASYNCWEBSERVER -ASYNCWEBSERVERHANDLERIMPL -ASYNCWEBSERVERRESPONSEIMPL -ASYNCWEBSOCKET -ASYNCWEBSYNCHRONIZATION +asynceventsource +asynctcp +asyncwebserver +asyncwebserverhandlerimpl +asyncwebserverresponseimpl +asyncwebsocket +asyncwebsynchronization atoint ausreichend außenluft -Außenluft authmode -AUTHMODE autodst automode autoscroll @@ -79,6 +74,7 @@ auxelecheatnrgconsheating auxelecheatnrgconspool auxelecheatnrgconstotal auxheaterdelay +auxheaterlevel auxheateroff auxheateronly auxheaterstatus @@ -87,85 +83,89 @@ auxheatrmode auxlimitstart auxmaxlimit avty -AWSC -Azubuike +awsc +azubuike badems basepoint -BASEREG +basereg +bblanchon bbqkees -Benoit +beddouble +bedsingle +benoit bertmelis -Bertrik +bertrik bitb bitptr bittimes bitupdate bitvalue -BLANCHON +blanchon blockend blockheader blockheadersize blocksize blocktime -Blowerspeed -Boardprofile -BOARDPROFILE +blowerspeed +boardprofile boilhystoff boilhyston boiltemp bolier +bolv boosttime bootable bootloader bottomtemp +bowlmix breakp +brotlin bssid -Bssid -BSSID buderus -Buderus -BUDERUS budrus -BUFBLOCKSIZE +bufblocksize bufferedflow burngas burnmaxpower burnminperiod burnminpower -Burnpower +burnpower burnstarts burnworkmin -Bytetime +bytetime calinttemp catagory cbuf -Cerapur +cerapur +česky cfamily changeloglevel chargeduration chargeoptimization chargepump chargetype -Chmela +chefhat +chimneysweeper +chmela circmode circprog circpump circswitchtime +circtc cked clangtidy climatezone clockoffset clockrate -CLSD +clsd cmdfunction cmdfunctions -Codacy +codacy codeunit -COILDATA +coildata coilset coldshot -Coldshot -COLDSHOT +coldtemp collectormaxtemp collectormintemp collectorshutdown @@ -173,20 +173,21 @@ collectortemp collectortype colmax colmin -Comf +comf comfdiff comfoff comforttemp comfstop -Commpressor +commandsfunctions +commpressor compstartmod -Condens +condens configdone connack -Connack -CONNACK connectcb connectcount +constlow +constmed controlmode coolingcircuit coolingon @@ -194,35 +195,35 @@ coolingstarts cooloffdelay coolondelay coolstart -COOLSTART coredata -Coredump +coredump coulod cppcheck -CPPCHECK cppdefines -CPPDEFINES cpplint cprint cpsell -CSOURCES +csources cstate +ctkwh curburnpow curflow curflowtemp +currhum curroominfl currsetpoint +currsolarinfl currtemp curtemp curvebase curveend curveon customentities -CUSTOMENTITIES -CUSTOMENTITY +customentity customlist customname -CXXSOURCES +customsupport +cxxsources cylbottomtemp cylheated cylinderpumpmod @@ -232,123 +233,117 @@ cylmiddletemp cylprio cylpriority cylpumpmod +cyltoptemp dailyheating dailyheattime +dailytemp dallassensor dampedoutdoortemp dangel -Dangel -DARDUINO -DARDUINOJSON +darduino +darduinojson datafield datalast -Dauer +dauer dayhightemp daylightsaving daylow -DAYLOW daylowtemp daymid -DAYMID daymidtemp daymode daytemp -DBOARD -DCLANG -DCORE -DEFAULTIDLETIME -DEFAULTTIMEOUT +dboard +dclang +dcore +defaultidletime +defaulttimeout defterm delayboiler delimieter delt -DEMC -DEMSESP -DEPFLAGS +deltatret +demc +demsesp +depflags depower depowering derefenced designtemp desitnation -DESP -Deutsch +desp +deutsch devicedata -DEVICEDATA deviceentities -DEVICEENTITIES -DEVICEERROR +deviceerror devicename -DEVICENAME devicetype devicevalue -DEVICEVALUE devicevalues +devkitc devtype dewoffset dewpoint +dewtemp dewtemperature dhwmintemp dhwprio dhwvalve +dhwx +difftemp disassoc -DISASSOC -Disballance -DISCONN -Disconnectfn -DISCR +disballance +disconn +disconnectfn +discr disinfectday disinfecthour disinfectiontemp disinfecttime displaycode -Domoticz -DOMOTICZ -DONEWIRE +domoticz +donewire doub doublematchflow drehzahl -Drehzahlanpassung +drehzahlanpassung dscrc -Dsonar -DTASMOTA -DUARATION -Eacj -EASYCOM -Eburner +dsonar +dtasmota +duaration +eacj +easycom +eburner ecodiff -Ecomline +ecomline ecooff ecoplus -Ecoplus ecoplusdiff ecoplusoff ecoplusstop ecostop ecotemp efuse -Efuse einschlafen +eldhw elec -Elec electricfactor -ELGs +elgendhw +elgenheat +elgs +elheat elheatstep emergencyops emergencytemp -EMESESP -EMODBUS +emesesp +emodbus emsdevice -EMSDEVICE emsdevices emsdevicevalue -EMSDEVICEVALUE emsesp -EMSESP -EMSFACTORY +emsfactory emsplus -EMSPLUS emsuart -EMSUART encodestate endcond energycostratio @@ -358,45 +353,45 @@ energypriceel energypricegas energytoday energytotal -Enthalpie +enthalpie entityid entitypath enumupdate -Enviline -Equipt +enviline +equipt erct erdwärmetauscher -Erdwärmetauscher +errordisp errornumber esphome espressif -Espressif -Espressif's +espressif's esptool etharp -ETSI +etsi evenodd everslick -Ewen +ewen exhausttemp externalcyl +fanspd fanwork fastheatup fastheatupfactor -FCGENERIC -FCILLEGAL +favs +fcgeneric +fcillegal fcmap -FCUSER +fcuser fdata fernbed -Fernbed fetchblock feucht -Feuchteschutz +feuchteschutz ffunction filesiz -Filterlaufzeit -Filterwechsel +filterlaufzeit +filterwechsel fipa firstscan fixarray @@ -406,69 +401,65 @@ fixmap fixstr flamecurr floordry -Floordry floordrying floordrystatus floordrytemp floorheating flowbuffer -FLOWCTRL +flowctrl flowoffset -FLOWOFFSET flowsensor flowsettemp flowtemp -Flowtemp flowtemphc flowtempoffset -Flowtemps +flowtemps flowtempvf fnames footpoint forceheatingoff forrmat fortluft -Fortluft fossile fossilefactor fprofile -FPSTR +fpstr +français freeable freemem -Frostgrenztemperatur -Frostschutz -FSFS +frostgrenztemperatur +frostschutz +fsfs fstotal ftest +fueldhw +fuelheat fullscreen fulltopic -Funktion -Furtheron +funktion +furtheron gasmeter gasmeterheat -Genuino -Gerätetyp +genuino +gerätetyp getserver getservername ggdb gifsicle -GIQFZUG +giqfzug glbl -Gochkov +gochkov gpio -GPIO gpios -GPIOs -GPOC -Greenstar -Grokhotkov +gpoc +greenstar +grokhotkov haclimate -systemstatus -Harwerth +hardwarestatus +harwerth headersize headertemp healthcheck -HEALTHCHECK heatandcool heatassistpower heatassistvalve @@ -477,7 +468,7 @@ heatcable heatcnt heatcntflowtemp heatcntrettemp -Heatcounter +heatcounter heatdrainpan heatexchangertemp heatingactivated @@ -487,7 +478,6 @@ heatingcircuits heatingciruit heatingcurve heatingoff -HEATINGOFF heatingpid heatingpump heatingpumpmod @@ -500,29 +490,26 @@ heatmetering heatoffdelay heatondelay heatpump -Heatpump -HEATPUMP heatpumpoutput heatpumps heatrequest -Heatronic +heatronic heatsource -Heatsource -HEATSOURCE heatsources heatstarts heattemp +heattransfer heattransfersystem heatup -Heatup heatvalve heatworkmin -Heizkeis -HEXDIGIT -HEXDUMP +heizkeis +hexdigit +hexdump hextoa hextoint -Heyse +heyse +hideled highfive hinzufügen historial @@ -531,7 +518,7 @@ holidaymode holidaymodes holidaytemp homeassistant -HOMEASSISTANT +hottemp hpactivity hpbrinein hpbrineout @@ -541,6 +528,7 @@ hpcircspd hpcompon hpcompspd hpcooling +hpcurrpower hpea hphystcool hphystheat @@ -554,6 +542,7 @@ hpoperatingstate hpph hppl hppower +hppowerlimit hppumpmode hpsetdiffpress hpshutdown @@ -563,23 +552,20 @@ hptc hptl hptr hptw -Hristo -HTTPC +hristo +httpc humi -HUMI -HVAC +hvac hwaddr hwrevision hybriddhw hybridstrategy hydr -Hydr hyst -Hyst hystoff hyston ibutton -ICCARM +iccarm icondegrees iconkb iconlmin @@ -587,25 +573,26 @@ iconnum iconpercent iconua idedata -Iele +iele ignwork -Iiwi -Ijoy -Imlhd +iiwi +ijoy +imlhd inbyte inexhaust infresh inkscape -INPROGRESS +inprogress instaliert instantstart intensiv -Intensiv +intergral intoffset inttemp +intvl invers invertiert -IRAM +iram isbroadcast isglobal islinklocal @@ -613,40 +600,40 @@ isloopback ismixed ismulticast isnum -Isrc +isrc isrunning issign issitelocal isuniquelocal isvalid isystem -Italiano +italiano itty ivtclock +jtag junkersclock kamin -Kamin -Karlesky -Keelbypass +karlesky +keelbypass +keepwarm keepwarmtemp -Kees -Kernighan's +kees +kernighan's keysvalues klappe kmin -KMIN kompakt -Konfig +konfig kwertie -Kwmoar +kwmoar labellen -Larios +larios lastcode lastpayload lastresponse lasttopic -LATXCLR -LATXSET +latxclr +latxset layeredbuffer ldata ldus @@ -654,58 +641,54 @@ ledc leistung lgcov libdeps -LIBRETINY -Licence -Liligo +libretiny +licence +liligo linebuf littlefs -LITTLEFS llen +lltoa lmin -LMIN lockguard lockmq -Logamatic -Logamax -Logano -Logavent -LOGDEVICE +logamatic +logamax +logano +logatherm +logavent +logdevice logentry -Logomatic -LOGRAW +logomatic +lograw lolin -Lolin -LOLIN -Lovato +lovato lownoisemode lownoisestart lownoisestop lowpressure lowtopic -Lufqualität -Luft -Lüfterstufe +lufqualität +luft +lüfterstufe luftfeuchte -Luftfeuchte -Luftfeuchtefühler -Luftqualfühl -Lüftungsfrostschutz -Lukás +luftfeuchtefühler +luftqualfühl +lüftungsfrostschutz +lukás maintenancedate maintenancemessage maintenancetime malloc mandefrost manualtemp -Manuell -Margolis -Marko +manuell +margolis +marko masterthermostat mathieucarbou maxalloc -MAXBUFFERSIZE +maxbuffersize maxflow -MAXFLOW maxflowtemp maxheat maxheatcomp @@ -716,18 +699,17 @@ maxpower maxt maxtemp maxv -MBAP +mbap mbar -MBAR mbed mbedtsl mdio -MDNS -Melis -Mellis -MEMPOL +mdns +melis +mellis +mempol memsiz -MENUCONFIG +menuconfig messagebuffer messagetime metercomp @@ -735,12 +717,12 @@ metercool metereheat meterheat metertotal +mfgadd mheyse microcontroller -Microcontroller mindcase minexttemp -MINFLOW +minflow minflowtemp miniv minmod @@ -750,58 +732,48 @@ mintempsilent minv misa mischer -Mischer mischerposition mixertemp mixingvalves -Mjhl -Mjkz +mjhl +mjkz mlongcalls -MMIO -Mmode -MMPLUS +mmio +mmode +mmplus mockserver modbus -Modbus -MODBUS modee modetype -MODULELIBRARY -Moduline +modulelibrary +moduline mozjpeg mqtt -Mqtt -MQTT mqttclient mqttconnects mqttcount mqttfails +mqttreconnects msgpack -Msgpack msgstr msys -Msys mtext mult -Mysys +mysys nachheiz -Nachheiz nachheizreg -Nachheizregister +nachheizregister nameserver ncmd ncols -Ndrop -Nederlands +ndrop +nederlands nefit -Nefit -NEFIT negcond negheat nein -Nennvolumentstrom +nennvolumentstrom neopixel -Neopixel netcmp netflowtemp netif @@ -811,26 +783,24 @@ newpcb newrssi nightmode nighttemp -NODEMCU +nodemcu nofrost -NOFROST nofrostmode nofrosttemp nominalpower nomis nompower -NOPULL -NOREDUCE +nopull +noreduce noreducetemp -Norsk +norsk nosleep nostdinc notepack notoken -NOTOKEN -NOTRANSLATION -NOTSET -NOTYPE +notranslation +notset +notype nrgconscomp nrgconscompcooling nrgconscompheating @@ -846,16 +816,15 @@ nrgsupppool nrgsupptotal nrgtotal nrgww -NSIs +nsis ntag -NUBD +nubd nullptr numericoperator -NUMJOBS +numjobs numop -NUMOP -Nwcl -Nystrom +nwcl +nystrom odata oddparity öffnen @@ -863,15 +832,13 @@ offsettemp offtemp oilpreheat oldoffset -Olimex -OLIMEX -OLIMEXPOE +olimex +olimexpoe +omea onchange -ONCHANGE onetimekey onewire -ONEWIRE -Ooops +ooops operatingstate opmode optipng @@ -881,46 +848,46 @@ outdoortemp outexhaust outfresh outpow -Packr +packr pacman partitionname partymode payloadbuffer pbutton -PBUTTON penv periph -PERIPH persistance physaddr -PICO +pico pinchange -PINGREQ -PINGRESP -PINGTEST -PIOENV +pingreq +pingresp +pingtest +pinout +pioarduino +pioenv plainwatermode platformio -Platformio -PLATFORMIO pngquant polltime -Polski +polski poolsettemp +poolshunt +poolshuntstatus poolstarts -PORTX +pooltemp +portx +powerreduction powervalues prerel -Prerel primepump primepumpmod printfln prioitise prioritise -PRIXPTR -PROBEREQRECVED +prixptr +probereqrecved proddy -Proddy productid proga progb @@ -929,125 +896,128 @@ progd proge progf progmem -Progmem -PROGMEM progmode +proplow psram -Psram -PSRAM pswid ptys -Puback -PUBACK -PUBACKs -Pubcomp -PUBCOMP -PUBCOMPs -Pubrec -PUBREC -PUBRECs -Pubrel -PUBREL -PUBRELs +puback +pubacks +pubcomp +pubcomps +pubrec +pubrecs +pubrel +pubrels pumpcharacter pumpdelay pumpkick pumpminmod +pumpmod pumpmode pumpmodmax pumpmodmin +pumpontemp +pumpopt pumpstatus +pumpstep pumpworktime pvcooling pvenabledhw pvlen pvlowercool +pvmaxcomp pvraiseheat pvstr -PWRCAP -PYTHONEXE -QOSRESERVED +pwrcap +pythonexe +qosreserved qtxt -Qube +qube questionmark queuecount raumluftfechte raumluftqualität rawstr -RCPLUS +rcplus readback readelf recved +redtemp +redthreshold reducehours reduceminutes reducemode reducetemp -Referer +referer registercount registeroffset rego -Rego -RELNOTES -Remmerswaal's +relais +relnotes +remmerswaal's remotehum remoteseltemp -REMOTESELTEMP remotetemp reqconntype reqs +requiredtemp retheatassist rettemp returncodes reuest -RFBASE +rfbase rfds -RFSENSOR -Rinterval +rfsensor +rinterval riscv rjwats -Rlistener -RMII +rlistener +rmii roboto romminfluencefactor roomcontrol -ROOMCONTROL roomcontroller roomcontrollers -Roomctrl +roomctrl +roomdata +roomflow roomhold roominfl roominflfactor roominfluence -ROOMINFLUENCE +roomload +roomname +roomparams +roomschedule roomsensor +roomsettings roomtemp roomtempdiff roomtemperature -Roomtemperature -ROOMTHERMOSTAT -Rrts -Rserial -Rskip +roomthermostat +roomthermostats +rrts +rserial +rskip rssi -Rssi -RSSI runqueue rxfails -RXFIFO +rxfifo rxreceived rxservice -Saavedra +saavedra safebuild -SAMD +samd saveandactivate scalefactor scancnt scanretry -SCHEDULEFLAG +scheduleflag schließen -SCLK +sclk sday -SDIO +sdio selburnpow selflowtemp seltemp @@ -1062,10 +1032,10 @@ sensorname sensorreads sensortype seperator -SERVERCLASS +serverclass servicecode servicecodenumber -SERVICEKEY +servicekey setburnpow setburnpower setflowtemp @@ -1075,28 +1045,30 @@ setpower setpumppower setreturntemp settemp -Settemp settemplow settingsfiles setvalue -SHORTNAMES +shortnames +showeralert +showertimer +shuntingyard sieger -Sieger -SIEGER signon -Sikken +sikken silentfrom silentmode silentto skipchar skipt sleepmode -Slovenčina -SLTKA +slovenčina +sltka smallitoa -Smartline +smartline sntp +sofasingle solarenabled +solarinfl solarmode solarmodule solarpower @@ -1107,34 +1079,36 @@ solarpumpmode solartemp solekreispumpe soll -Speicher +speicher +spidqs +spiio squaremeters -Srts -STACONNECTED -STADISCONNECTED -STAIPASSIGNED +srts +staconnected +stadisconnected +staipassigned +startshp +starttemp starttemperature -STARTVALUE +startvalue statusbyte stickbreaker -Stickbreaker -Stoffregen +stoffregen +stoptime storagetemp -Störung -STRINGARRAY -STRINGIZE -Studt -Studt's +störung +stringarray +stringize +studt +studt's suback -Suback -SUBACK substract summermode summersetmode summertemp supchan -SUPCHAN -Svenska +suprapur +svenska svmap swapflowtemp swaprettemp @@ -1145,27 +1119,27 @@ switchoff switchonoptimization switchovertemp switchprogmode +switchprogram switchtemp switchtime +switchtimeww sycle syspress sysrettemp -Tado -TADO +systemstatus +tado tapactivated tapwarmwater tapwater tapwateractive targetflowtemp -TARGETHOSTINTERVAL +targethostinterval tasmota -Tasmota -TASMOTA -Tasmota's +tasmota's tbreak +teddybear tele tempauto -TEMPAUTO tempautotemp tempdiffboiler tempdiffcool @@ -1174,44 +1148,48 @@ tempecoplus temperatur temperaturcorrection temperaturesensor -TEMPERATURESENSOR templevel tempok tempparmode +temprature tempsensor -TEMPSENSOR +tempstatus testtemperature thermaldisinfect thermostate -Tillotson +tillotson timeoutcnt timestr -Toastify +toastify toencode toolbelt -TOOMANY -Topline +toomany +topline totalcompstarts tpcb -TRACELOG +tracelog +transferpump +transferpumpmod transre treemap -Trendline -Trewitt +trendline +trewitt triaging -Triaging -TRISXCLR -TRISXSET +trisxclr +trisxset trivago trocken -TRUEFALSE +truefalse +tsens tseslint -Türk +türk turnoffdiff turnondiff +txen txerror txfails -TXMODE +txmode +txpause txread txreads txservice @@ -1222,21 +1200,19 @@ typehh typeids typel typesafe -Typesafe -UART +uart ubauptime ucrt ultostr -Umladesystem -UNDERCLOCK +umladesystem +underclock unflags -UNICORE -Unpackr -Unported -UNSUB -Unsuback -UNSUBACK -UPLOADCMD +unicore +unpackr +unported +unsub +unsuback +uploadcmd uptimecomp uptimecompcooling uptimecompheating @@ -1244,60 +1220,64 @@ uptimecomppool uptimecontrol uptimetotal userprogram -Uutils -VACREDUCE +uutils +vacationmode +vacreduce vacreducemode vacreducetemp validateid -VALIDATORC -VALIDATORR +validatorc +validatorr valu -VALUECONFIG +valueconfig valuename +valvereturn valvesettime valvestatus -Vander -Ventil +vander +vchip +ventil ventinspeed ventmode ventoutspeed venv verwendete -Vflag +vflag viewtopic virtaddr -Volumenstromabgleich -Voord +volumenstromabgleich +voord vorheizer vorheizreg vpcooling vrey -Vybm -Wärmetauscher +vybm +wärmetauscher +washingmachine watchid wayon wayvalve -Wconversion -Wdiv +wconversion +wdiv webui wemos -Wemos -Werror -Wextra +werror +wextra whenmodeoff -WIFICLIENT +wificlient +wifireconnects wifistrength winsock withexitstatus -Wmaybe -Worchester +wmaybe +worchester workm workmin worktime -WOULDBLOCK -Wswitch -Wtype -Wunused +wouldblock +wswitch +wtype +wunused wwactivated wwcharge wwchargeduration @@ -1313,6 +1293,7 @@ wwmodes wwonetime wwprio wwseltemp +wwstarts wwswitchtime wwtankmiddletemp wwtapactivated @@ -1320,132 +1301,23 @@ wwtemp wwtemplow wwvacations wwwhenmodeoff -Xclnt -XRTU -XTCP -XVCJ -Yerger -Yerger's +xclnt +xiao +xrtu +xtcp +xvcj +yerger +yerger's yubox -Zivanovic -Živanović -Zlcn +zadig +zivanovic +živanović +zlcn zolder -Zolder zqhi -ZSIs +zsis zuluft -Zuluft zuluftebläse zuluftgebläse zulufttemp zyxwvutsrqponmlkjihgfedcba -Omea -Bolv -hardwarestatus -hpcurrpower -hppowerlimit -CUSTOMSUPPORT -favs -Logatherm -TSENS -pumpontemp -Česky -pioarduino -switchtimeww -pvmaxcomp -powerreduction -starttemp -heattransfer -poolshunt -poolshuntstatus -pooltemp -stoptime -showertimer -showeralert -CTKWH -wifireconnects -mqttreconnects -wwstarts -auxheaterlevel -startshp -cyltoptemp -transferpump -transferpumpmod -startshp -tempstatus -difftemp -redtemp -requiredtemp -coldtemp -redtemp -hottemp -dailytemp -circtc -keepwarm -pumpmod -valvereturn -deltatret -errordisp -commandsfunctions -hideled -analogenabled -dhwx -ahsx -roomflow -roomload -intvl -Français -lltoa -redthreshold -JTAG -fuelheat -elheat -elgenheat -fueldhw -eldhw -elgendhw -solarinfl -currsolarinfl -temprature -bblanchon -vacationmode -airbypass -Suprapur -mfgadd -shuntingyard -XIAO -zadig -devkitc -Roomthermostats -Roomname -Roomsettings -Roomparams -Roomdata -Roomschedule -dewtemp -chefhat -sofasingle -bowlmix -bedsingle -beddouble -teddybear -washingmachine -switchprogram -brotlin -fanspd -currhum -pumpstep -constmed -constlow -proplow -chimneysweeper -pumpopt -intergral -vchip -SPIIO -SPIDQS -txpause -relais -pinout -TXEN \ No newline at end of file From f01031dc26d0438840d264c1f7756af83761e6dc Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 18 Jan 2026 15:00:43 +0000 Subject: [PATCH 004/162] optimize --- src/core/emsfactory.h | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/core/emsfactory.h b/src/core/emsfactory.h index d2ac63707..8f7f400f0 100644 --- a/src/core/emsfactory.h +++ b/src/core/emsfactory.h @@ -19,14 +19,15 @@ #ifndef EMSESP_EMSFACTORY_H_ #define EMSESP_EMSFACTORY_H_ -#include #include // for unique_ptr +#include -#include "emsdevice.h" +// Forward declaration +namespace emsesp { +class EMSdevice; +} // Macro for class registration -// Anonymous namespace is used to make the definitions here private to the current -// compilation unit (current file). It is equivalent to the old C static keyword. #define REGISTER_FACTORY(derivedClass, device_type) \ namespace { \ auto registry_##derivedClass = ConcreteEMSFactory(device_type); \ @@ -34,30 +35,30 @@ namespace emsesp { -class EMSdevice; // forward declaration, for gcc linking - class EMSFactory { public: virtual ~EMSFactory() = default; - // Register factory object of derived class - // using the device_type as the unique identifier + // Register factory object of derived class using the device_type as the unique identifier static auto registerFactory(const uint8_t device_type, EMSFactory * factory) -> void { auto & reg = EMSFactory::getRegister(); reg[device_type] = factory; } - using FactoryMap = std::map; + using FactoryMap = std::unordered_map; // returns all registered classes (really only for debugging) - static auto device_handlers() -> FactoryMap { + static auto device_handlers() -> const FactoryMap & { return EMSFactory::getRegister(); } // Construct derived class returning an unique ptr static auto add(const uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * default_name, uint8_t flags, uint8_t brand) -> std::unique_ptr { - return std::unique_ptr(EMSFactory::makeRaw(device_type, device_id, product_id, version, default_name, flags, brand)); + if (auto * ptr = EMSFactory::makeRaw(device_type, device_id, product_id, version, default_name, flags, brand)) { + return std::unique_ptr(ptr); + } + return nullptr; } virtual auto construct(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) const @@ -74,8 +75,9 @@ class EMSFactory { // find which EMS device it is and use that class static auto makeRaw(const uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) -> EMSdevice * { - auto it = EMSFactory::getRegister().find(device_type); - if (it != EMSFactory::getRegister().end()) { + auto & reg = EMSFactory::getRegister(); + auto it = reg.find(device_type); + if (it != reg.end()) { return it->second->construct(device_type, device_id, product_id, version, name, flags, brand); } return nullptr; From 3402215e8d8e92496eab60d228dd873c5e0c3e86 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 18 Jan 2026 15:49:35 +0000 Subject: [PATCH 005/162] optimizations --- src/ESP32React/APSettingsService.cpp | 35 ++++++------ src/ESP32React/APSettingsService.h | 14 ++--- src/ESP32React/JsonUtils.h | 9 ++-- src/ESP32React/MqttSettingsService.cpp | 2 +- src/ESP32React/MqttSettingsService.h | 6 +-- src/ESP32React/NTPSettingsService.h | 2 +- src/ESP32React/NetworkSettingsService.h | 6 +-- src/devices/thermostat.cpp | 71 ++++++++++++++++--------- 8 files changed, 86 insertions(+), 59 deletions(-) diff --git a/src/ESP32React/APSettingsService.cpp b/src/ESP32React/APSettingsService.cpp index e26d3647d..b0e3480be 100644 --- a/src/ESP32React/APSettingsService.cpp +++ b/src/ESP32React/APSettingsService.cpp @@ -21,24 +21,24 @@ void APSettingsService::begin() { // wait 10 sec on STA disconnect before starting AP void APSettingsService::WiFiEvent(WiFiEvent_t event) { - uint8_t was_connected = _connected; + const uint8_t was_connected = _connected; switch (event) { case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: - _connected &= ~1; + _connected &= ~1U; break; case ARDUINO_EVENT_ETH_DISCONNECTED: - _connected &= ~2; + _connected &= ~2U; break; case ARDUINO_EVENT_WIFI_STA_GOT_IP: case ARDUINO_EVENT_WIFI_STA_GOT_IP6: - _connected |= 1; + _connected |= 1U; break; case ARDUINO_EVENT_ETH_GOT_IP: case ARDUINO_EVENT_ETH_GOT_IP6: - _connected |= 2; + _connected |= 2U; break; default: - break; + return; } // wait 10 sec before starting AP if (was_connected && !_connected) { @@ -52,18 +52,19 @@ void APSettingsService::reconfigureAP() { } void APSettingsService::loop() { - unsigned long currentMillis = uuid::get_uptime(); - unsigned long manageElapsed = static_cast(currentMillis - _lastManaged); - if (manageElapsed >= MANAGE_NETWORK_DELAY) { + const unsigned long currentMillis = uuid::get_uptime(); + if ((currentMillis - _lastManaged) >= MANAGE_NETWORK_DELAY) { _lastManaged = currentMillis; manageAP(); } - handleDNS(); + if (_dnsServer) { + handleDNS(); + } } void APSettingsService::manageAP() { - WiFiMode_t currentWiFiMode = WiFi.getMode(); + const WiFiMode_t currentWiFiMode = WiFi.getMode(); if (_state.provisionMode == AP_MODE_ALWAYS || (_state.provisionMode == AP_MODE_DISCONNECTED && !_connected)) { if (_reconfigureAp || currentWiFiMode == WIFI_OFF || currentWiFiMode == WIFI_STA) { startAP(); @@ -87,8 +88,10 @@ void APSettingsService::startAP() { WiFi.setTxPower(WIFI_POWER_8_5dBm); // https://www.wemos.cc/en/latest/c3/c3_mini_1_0_0.html#about-wifi #endif if (!_dnsServer) { - IPAddress apIp = WiFi.softAPIP(); - emsesp::EMSESP::logger().info("Starting Access Point with captive portal on %s", apIp.toString().c_str()); + const IPAddress apIp = WiFi.softAPIP(); + char ipStr[16]; + snprintf(ipStr, sizeof(ipStr), "%u.%u.%u.%u", apIp[0], apIp[1], apIp[2], apIp[3]); + emsesp::EMSESP::logger().info("Starting Access Point with captive portal on %s", ipStr); _dnsServer = new DNSServer; _dnsServer->start(DNS_PORT, "*", apIp); } @@ -111,8 +114,8 @@ void APSettingsService::handleDNS() { } APNetworkStatus APSettingsService::getAPNetworkStatus() { - WiFiMode_t currentWiFiMode = WiFi.getMode(); - bool apActive = currentWiFiMode == WIFI_AP || currentWiFiMode == WIFI_AP_STA; + const WiFiMode_t currentWiFiMode = WiFi.getMode(); + const bool apActive = (currentWiFiMode == WIFI_AP || currentWiFiMode == WIFI_AP_STA); if (apActive && _state.provisionMode != AP_MODE_ALWAYS && WiFi.status() == WL_CONNECTED) { return APNetworkStatus::LINGERING; @@ -135,7 +138,7 @@ void APSettings::read(const APSettings & settings, JsonObject root) { } StateUpdateResult APSettings::update(JsonObject root, APSettings & settings) { - APSettings newSettings = {}; + APSettings newSettings{}; newSettings.provisionMode = static_cast(root["provision_mode"] | FACTORY_AP_PROVISION_MODE); switch (settings.provisionMode) { diff --git a/src/ESP32React/APSettingsService.h b/src/ESP32React/APSettingsService.h index fda384bc8..9b52f84d0 100644 --- a/src/ESP32React/APSettingsService.h +++ b/src/ESP32React/APSettingsService.h @@ -1,5 +1,5 @@ -#ifndef APSettingsConfig_h -#define APSettingsConfig_h +#ifndef APSettingsService_h +#define APSettingsService_h #include "HttpEndpoint.h" #include "FSPersistence.h" @@ -70,9 +70,9 @@ class APSettings { IPAddress subnetMask; bool operator==(const APSettings & settings) const { - return provisionMode == settings.provisionMode && ssid == settings.ssid && password == settings.password && channel == settings.channel - && ssidHidden == settings.ssidHidden && maxClients == settings.maxClients && localIP == settings.localIP && gatewayIP == settings.gatewayIP - && subnetMask == settings.subnetMask; + return provisionMode == settings.provisionMode && channel == settings.channel && ssidHidden == settings.ssidHidden + && maxClients == settings.maxClients && localIP == settings.localIP && gatewayIP == settings.gatewayIP + && subnetMask == settings.subnetMask && ssid == settings.ssid && password == settings.password; } static void read(const APSettings & settings, JsonObject root); @@ -96,8 +96,8 @@ class APSettingsService : public StatefulService { // for the management delay loop volatile unsigned long _lastManaged; - volatile boolean _reconfigureAp; - uint8_t _connected; + volatile bool _reconfigureAp; + volatile uint8_t _connected; void reconfigureAP(); void manageAP(); diff --git a/src/ESP32React/JsonUtils.h b/src/ESP32React/JsonUtils.h index 0d2ff9fa5..7870f34a6 100644 --- a/src/ESP32React/JsonUtils.h +++ b/src/ESP32React/JsonUtils.h @@ -10,20 +10,23 @@ class JsonUtils { public: static void readIP(JsonObject root, const String & key, IPAddress & ip, const String & def) { - IPAddress defaultIp = {}; + IPAddress defaultIp{}; if (!defaultIp.fromString(def)) { defaultIp = INADDR_NONE; } readIP(root, key, ip, defaultIp); } static void readIP(JsonObject root, const String & key, IPAddress & ip, const IPAddress & defaultIp = INADDR_NONE) { - if (!root[key].is() || !ip.fromString(root[key].as())) { + const JsonVariant value = root[key]; + if (!value.is() || !ip.fromString(value.as())) { ip = defaultIp; } } static void writeIP(JsonObject root, const String & key, const IPAddress & ip) { if (IPUtils::isSet(ip)) { - root[key] = ip.toString(); + char ipStr[16]; + snprintf(ipStr, sizeof(ipStr), "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]); + root[key] = ipStr; } } }; diff --git a/src/ESP32React/MqttSettingsService.cpp b/src/ESP32React/MqttSettingsService.cpp index 11c84462e..1c07748f0 100644 --- a/src/ESP32React/MqttSettingsService.cpp +++ b/src/ESP32React/MqttSettingsService.cpp @@ -255,7 +255,7 @@ void MqttSettings::read(MqttSettings & settings, JsonObject root) { } StateUpdateResult MqttSettings::update(JsonObject root, MqttSettings & settings) { - MqttSettings newSettings = {}; + MqttSettings newSettings; bool changed = false; #ifndef TASMOTA_SDK diff --git a/src/ESP32React/MqttSettingsService.h b/src/ESP32React/MqttSettingsService.h index 83cf751dd..36b52fa74 100644 --- a/src/ESP32React/MqttSettingsService.h +++ b/src/ESP32React/MqttSettingsService.h @@ -125,11 +125,11 @@ class MqttSettingsService : public StatefulService { FSPersistence _fsPersistence; // variable to help manage connection - bool _reconfigureMqtt; - unsigned long _disconnectedAt; + volatile bool _reconfigureMqtt; + volatile unsigned long _disconnectedAt; // connection status - espMqttClientTypes::DisconnectReason _disconnectReason; + volatile espMqttClientTypes::DisconnectReason _disconnectReason; // the MQTT client instance MqttClient * _mqttClient; diff --git a/src/ESP32React/NTPSettingsService.h b/src/ESP32React/NTPSettingsService.h index 4b3bbce69..635b68f1c 100644 --- a/src/ESP32React/NTPSettingsService.h +++ b/src/ESP32React/NTPSettingsService.h @@ -49,7 +49,7 @@ class NTPSettingsService : public StatefulService { private: HttpEndpoint _httpEndpoint; FSPersistence _fsPersistence; - bool _connected; + volatile bool _connected; void WiFiEvent(WiFiEvent_t event); void configureNTP(); diff --git a/src/ESP32React/NetworkSettingsService.h b/src/ESP32React/NetworkSettingsService.h index f35186bf6..7c1ed0ff7 100644 --- a/src/ESP32React/NetworkSettingsService.h +++ b/src/ESP32React/NetworkSettingsService.h @@ -102,10 +102,10 @@ class NetworkSettingsService : public StatefulService { HttpEndpoint _httpEndpoint; FSPersistence _fsPersistence; - unsigned long _lastConnectionAttempt; - bool _stopping; + volatile unsigned long _lastConnectionAttempt; + volatile bool _stopping; - uint16_t connectcount_ = 0; // number of wifi reconnects + volatile uint16_t connectcount_ = 0; // number of wifi reconnects void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info); void mDNS_start() const; diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index bbefe086b..4ebe5d33d 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -59,7 +59,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i if (model == EMSdevice::EMS_DEVICE_FLAG_RC10) { monitor_typeids = {0xB1}; set_typeids = {0xB0}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t size = monitor_typeids.size(); + for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC10Monitor", false, MAKE_PF_CB(process_RC10Monitor)); register_telegram_type(set_typeids[i], "RC10Set", false, MAKE_PF_CB(process_RC10Set)); } @@ -70,7 +71,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set_typeids = {0x3D, 0x47, 0x51, 0x5B}; timer_typeids = {0x3F, 0x49, 0x53, 0x5D}; timer2_typeids = {0x42, 0x4C, 0x56, 0x60}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t size = monitor_typeids.size(); + for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC35Monitor", false, MAKE_PF_CB(process_RC35Monitor)); register_telegram_type(set_typeids[i], "RC35Set", false, MAKE_PF_CB(process_RC35Set)); register_telegram_type(timer_typeids[i], "RC35Timer", false, MAKE_PF_CB(process_RC35Timer)); @@ -88,7 +90,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set_typeids = {0xA8}; curve_typeids = {0x90}; timer_typeids = {0x8F}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t size = monitor_typeids.size(); + for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor)); register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set)); register_telegram_type(curve_typeids[i], "RC20Temp", false, MAKE_PF_CB(process_RC20Temp)); @@ -103,7 +106,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i if (device_id == 0x17) { // master monitor_typeids = {0xAE}; set_typeids = {0xAD}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t size = monitor_typeids.size(); + for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor_2)); register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set_2)); } @@ -117,7 +121,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set_typeids = {0xA7}; curve_typeids = {0x40}; timer_typeids = {0x3F}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t size = monitor_typeids.size(); + for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC30Monitor", false, MAKE_PF_CB(process_RC30Monitor)); register_telegram_type(set_typeids[i], "RC30Set", false, MAKE_PF_CB(process_RC30Set)); register_telegram_type(curve_typeids[i], "RC30Temp", false, MAKE_PF_CB(process_RC30Temp)); @@ -131,15 +136,16 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // EASY } else if (model == EMSdevice::EMS_DEVICE_FLAG_EASY) { monitor_typeids = {0x0A}; - set_typeids = {}; + set_typeids.clear(); register_telegram_type(monitor_typeids[0], "EasyMonitor", true, MAKE_PF_CB(process_EasyMonitor)); register_telegram_type(0x02A5, "EasyMonitor", false, MAKE_PF_CB(process_EasyMonitor)); // CRF } else if (model == EMSdevice::EMS_DEVICE_FLAG_CRF) { monitor_typeids = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; - set_typeids = {}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + set_typeids.clear(); + const size_t size = monitor_typeids.size(); + for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "CRFMonitor", false, MAKE_PF_CB(process_CRFMonitor)); } @@ -163,14 +169,16 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i summer2_typeids = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; hp_typeids = {0x0467, 0x0468, 0x0469, 0x046A}; hpmode_typeids = {0x0291, 0x0292, 0x0293, 0x0294}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t monitor_size = monitor_typeids.size(); + for (uint8_t i = 0; i < monitor_size; i++) { register_telegram_type(monitor_typeids[i], "RC300Monitor", false, MAKE_PF_CB(process_RC300Monitor)); register_telegram_type(set_typeids[i], "RC300Set", false, MAKE_PF_CB(process_RC300Set)); register_telegram_type(summer_typeids[i], "RC300Summer", false, MAKE_PF_CB(process_RC300Summer)); register_telegram_type(curve_typeids[i], "RC300Curves", false, MAKE_PF_CB(process_RC300Curve)); register_telegram_type(summer2_typeids[i], "RC300Summer2", false, MAKE_PF_CB(process_RC300Summer2)); } - for (uint8_t i = 0; i < set2_typeids.size(); i++) { + const size_t set2_size = set2_typeids.size(); + for (uint8_t i = 0; i < set2_size; i++) { // register_telegram_type(set2_typeids[i], "RC300Set2", false, MAKE_PF_CB(process_RC300Set2)); register_telegram_type(set2_typeids[i], "RC300Set2", false, MAKE_PF_CB(process_PID)); register_telegram_type(hp_typeids[i], "HPSet", false, MAKE_PF_CB(process_HPSet)); @@ -210,19 +218,20 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i } monitor_typeids = {0x016F, 0x0170, 0x0171, 0x0172}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t junkers_size = monitor_typeids.size(); + for (uint8_t i = 0; i < junkers_size; i++) { register_telegram_type(monitor_typeids[i], "JunkersMonitor", false, MAKE_PF_CB(process_JunkersMonitor)); } if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { // FR120, FR100 set_typeids = {0x0179, 0x017A, 0x017B, 0x017C}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + for (uint8_t i = 0; i < junkers_size; i++) { register_telegram_type(set_typeids[i], "JunkersSet", false, MAKE_PF_CB(process_JunkersSet2)); } } else { set_typeids = {0x0165, 0x0166, 0x0167, 0x0168}; - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + for (uint8_t i = 0; i < junkers_size; i++) { register_telegram_type(set_typeids[i], "JunkersSet", false, MAKE_PF_CB(process_JunkersSet)); } } @@ -237,10 +246,12 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // query all the heating circuits. This is only done once. // The automatic fetch will from now on only update the active heating circuits - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t monitor_size_final = monitor_typeids.size(); + for (uint8_t i = 0; i < monitor_size_final; i++) { EMSESP::send_read_request(monitor_typeids[i], device_id); } - for (uint8_t i = 0; i < set_typeids.size(); i++) { + const size_t set_size = set_typeids.size(); + for (uint8_t i = 0; i < set_size; i++) { EMSESP::send_read_request(set_typeids[i], device_id); } @@ -293,7 +304,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search monitor message types if (hc_num == 0) { - for (uint8_t i = 0; i < monitor_typeids.size(); i++) { + const size_t monitor_size = monitor_typeids.size(); + for (uint8_t i = 0; i < monitor_size; i++) { if (monitor_typeids[i] == telegram->type_id) { hc_num = i + 1; toggle_ = true; @@ -304,7 +316,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search status message/set types if (hc_num == 0) { - for (uint8_t i = 0; i < set_typeids.size(); i++) { + const size_t set_size = set_typeids.size(); + for (uint8_t i = 0; i < set_size; i++) { if (set_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -314,7 +327,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search set2 types if (hc_num == 0) { - for (uint8_t i = 0; i < set2_typeids.size(); i++) { + const size_t set2_size = set2_typeids.size(); + for (uint8_t i = 0; i < set2_size; i++) { if (set2_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -324,7 +338,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search summer message types if (hc_num == 0) { - for (uint8_t i = 0; i < summer_typeids.size(); i++) { + const size_t summer_size = summer_typeids.size(); + for (uint8_t i = 0; i < summer_size; i++) { if (summer_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -334,7 +349,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search summer message types if (hc_num == 0) { - for (uint8_t i = 0; i < summer2_typeids.size(); i++) { + const size_t summer2_size = summer2_typeids.size(); + for (uint8_t i = 0; i < summer2_size; i++) { if (summer2_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -344,7 +360,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search heating_curve message types if (hc_num == 0) { - for (uint8_t i = 0; i < curve_typeids.size(); i++) { + const size_t curve_size = curve_typeids.size(); + for (uint8_t i = 0; i < curve_size; i++) { if (curve_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -354,7 +371,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search timer message types if (hc_num == 0) { - for (uint8_t i = 0; i < timer_typeids.size(); i++) { + const size_t timer_size = timer_typeids.size(); + for (uint8_t i = 0; i < timer_size; i++) { if (timer_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -364,7 +382,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search timer message types if (hc_num == 0) { - for (uint8_t i = 0; i < timer2_typeids.size(); i++) { + const size_t timer2_size = timer2_typeids.size(); + for (uint8_t i = 0; i < timer2_size; i++) { if (timer2_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -374,7 +393,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // not found, search heatpump message types if (hc_num == 0) { - for (uint8_t i = 0; i < hp_typeids.size(); i++) { + const size_t hp_size = hp_typeids.size(); + for (uint8_t i = 0; i < hp_size; i++) { if (hp_typeids[i] == telegram->type_id) { hc_num = i + 1; break; @@ -383,7 +403,8 @@ std::shared_ptr Thermostat::heating_circuit(std::sha } if (hc_num == 0) { - for (uint8_t i = 0; i < hpmode_typeids.size(); i++) { + const size_t hpmode_size = hpmode_typeids.size(); + for (uint8_t i = 0; i < hpmode_size; i++) { if (hpmode_typeids[i] == telegram->type_id) { hc_num = i + 1; break; From d952b9aaae34497f1dba075001b257162dec03d1 Mon Sep 17 00:00:00 2001 From: Jan van Haarst Date: Tue, 20 Jan 2026 08:27:24 +0100 Subject: [PATCH 006/162] Update Dutch translations for various terms As I don't have the board yet, I saw the error message "Als deze waarschuwing blijft staan na een paar seconden dan loop de instellingen na en in het bijzonder het apparaat type profiel na." That sentence didn't really flow right for me, so I had a look at the rest of the text, with this result. --- interface/src/i18n/nl/index.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index 9463088a8..bd0d0e6f7 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -27,7 +27,7 @@ const nl: Translation = { REFRESH: 'Ververs', EXPORT: 'Export', FAVORITES: "Favorieten", - DEVICE_DETAILS: 'Device Gegevens', + DEVICE_DETAILS: 'Apparaat Gegevens', ID_OF: '{0} ID', DEVICE: 'Apparaat', PRODUCT: 'Product', @@ -65,7 +65,7 @@ const nl: Translation = { TEMP_SENSOR: 'Temperatuur sensor', TEMP_SENSORS: 'Temperatuur Sensoren', WRITE_CMD_SENT: 'Schrijf commando gestuurd', - EMS_BUS_WARNING: 'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden dan loop de instellingen na en in het bijzonder het apparaat type profiel na.', + EMS_BUS_WARNING: 'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden loop dan de instellingen na en in het bijzonder het apparaat type profiel.', EMS_BUS_SCANNING: 'Scannen naar EMS apparaten...', CONNECTED: 'Verbonden', TX_ISSUES: 'Tx bus probleem. Probeer een andere Tx verzendmodus', @@ -75,7 +75,7 @@ const nl: Translation = { EMS_DEVICE: 'EMS Apparaat', SUCCESS: 'SUCCESS', FAIL: 'MISLUKT', - QUALITY: 'QUALITEIT', + QUALITY: 'KWALITEIT', SCAN: 'Scan', STATUS_NAMES: [ 'EMS Telegrammen ontvangen (Rx)', @@ -120,7 +120,7 @@ const nl: Translation = { ENABLE_SHOWER_TIMER: 'Activeer Douche Timer (tijdmeting)', ENABLE_SHOWER_ALERT: 'Activeer Douchemelding', TRIGGER_TIME: 'Trigger tijd', - COLD_SHOT_DURATION: 'Tijd Shot koud water', + COLD_SHOT_DURATION: 'Lengte koud water puls', FORMATTING_OPTIONS: 'Formatteringsopties', BOOLEAN_FORMAT_DASHBOARD: 'Boolean formaat web', BOOLEAN_FORMAT_API: 'Boolean formaat API/MQTT', @@ -143,7 +143,7 @@ const nl: Translation = { CUSTOMIZATIONS_FULL: 'Te veel entiteiten geselecteerd. Sla op in delen aub', CUSTOMIZATIONS_SAVED: 'Custom aanpassingen opgeslagen', CUSTOMIZATIONS_HELP_1: 'Selecteer een apparaat en pas de entiteiten aan door middel van de opties', - CUSTOMIZATIONS_HELP_2: 'Markeer as favoriet', + CUSTOMIZATIONS_HELP_2: 'Markeer als favoriet', CUSTOMIZATIONS_HELP_3: 'Zet schrijfacties uit', CUSTOMIZATIONS_HELP_4: 'Uitsluiten van MQTT en API', CUSTOMIZATIONS_HELP_5: 'verbergen voor apparaten', @@ -191,7 +191,7 @@ const nl: Translation = { UPLOAD_DROP_TEXT: 'Sleep en firmware .bin bestand hierheen of klik hier', ERROR: 'Onverwachte fout, probeer opnieuw', TIME_SET: 'Tijd ingesteld', - MANAGE_USERS: 'Beheer Gebruikers', + MANAGE_USERS: 'Gebruikersbeheer', IS_ADMIN: 'is Admin', USER_WARNING: 'U dient tenminste 1 admin gebruiker te configureren', ADD: 'Toevoegen', @@ -200,7 +200,7 @@ const nl: Translation = { GENERATING_TOKEN: 'Token aan het genereren', USER: 'Gebruiker', MODIFY: 'Aanpassen', - SU_TEXT: 'Het su (super user) wachtwoord wordt gebruikt om authorisatie tokens te signeren en ook om admin privileges te activeren in de console.', + SU_TEXT: 'Het su (super user) wachtwoord wordt gebruikt om authorisatie tokens te ondertekenen en ook om admin privileges te activeren in de console.', NOT_ENABLED: 'Niet geactiveerd', ERRORS_OF: '{0} Foutmeldingen', DISCONNECT_REASON: 'Verbinding verbroken vanwege', @@ -360,4 +360,4 @@ const nl: Translation = { STORED_VERSIONS: 'Opgeslagen versies' }; -export default nl; \ No newline at end of file +export default nl; From f4d2bae04f286be9b5b68e044db403df406e566f Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 22 Jan 2026 16:38:52 +0100 Subject: [PATCH 007/162] add psram --- lib/uuid-console/src/uuid/console.h | 39 +++++++++++++++-------------- lib/uuid-log/src/log.cpp | 4 +-- lib/uuid-log/src/uuid/log.h | 5 ++-- lib/uuid-syslog/src/uuid/syslog.h | 3 ++- lib/uuid-telnet/src/stream.cpp | 4 +-- lib/uuid-telnet/src/uuid/telnet.h | 7 +++--- 6 files changed, 33 insertions(+), 29 deletions(-) diff --git a/lib/uuid-console/src/uuid/console.h b/lib/uuid-console/src/uuid/console.h index e8f54d79e..1730058e9 100644 --- a/lib/uuid-console/src/uuid/console.h +++ b/lib/uuid-console/src/uuid/console.h @@ -34,6 +34,7 @@ #include #include +#include #include #include @@ -1645,22 +1646,22 @@ class Shell : public std::enable_shared_from_this, public uuid::log::Hand uint8_t cursor_ = 0; /*!< cursor position from end of line */ uint8_t esc_ = 0; /*!< esc sequence running */ - Stream & stream_; /*!< Stream used for the input/output of this shell. @since 3.0.0 */ - std::shared_ptr commands_; /*!< Commands available for execution in this shell. @since 0.1.0 */ - std::deque context_; /*!< Context stack for this shell. Affects which commands are available. Should never be empty. @since 0.1.0 */ - unsigned int flags_ = 0; /*!< Current flags for this shell. Affects which commands are available. @since 0.1.0 */ + Stream & stream_; /*!< Stream used for the input/output of this shell. @since 3.0.0 */ + std::shared_ptr commands_; /*!< Commands available for execution in this shell. @since 0.1.0 */ + std::deque> context_; /*!< Context stack for this shell. Affects which commands are available. Should never be empty. @since 0.1.0 */ + unsigned int flags_ = 0; /*!< Current flags for this shell. Affects which commands are available. @since 0.1.0 */ #if UUID_CONSOLE_THREAD_SAFE mutable std::mutex mutex_; /*!< Mutex for queued log messages. @since 1.0.0 */ #endif - unsigned long log_message_id_ = 0; /*!< The next identifier to use for queued log messages. @since 0.1.0 */ - std::list log_messages_; /*!< Queued log messages, in the order they were received. @since 0.1.0 */ - size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum command line length in bytes. @since 0.6.0 */ - std::string line_buffer_; /*!< Command line buffer. Limited to maximum_command_line_length() bytes. @since 0.1.0 */ - size_t maximum_command_line_length_ = MAX_COMMAND_LINE_LENGTH; /*!< Maximum command line length in bytes. @since 0.6.0 */ - unsigned char previous_ = 0; /*!< Previous character that was entered on the command line. Used to detect CRLF line endings. @since 0.1.0 */ - Mode mode_ = Mode::NORMAL; /*!< Current execution mode. @since 0.1.0 */ - std::unique_ptr mode_data_ = nullptr; /*!< Data associated with the current execution mode. @since 0.1.0 */ - bool stopped_ = false; /*!< Indicates that the shell has been stopped. @since 0.1.0 */ + unsigned long log_message_id_ = 0; /*!< The next identifier to use for queued log messages. @since 0.1.0 */ + std::list> log_messages_; /*!< Queued log messages, in the order they were received. @since 0.1.0 */ + size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum command line length in bytes. @since 0.6.0 */ + std::string line_buffer_; /*!< Command line buffer. Limited to maximum_command_line_length() bytes. @since 0.1.0 */ + size_t maximum_command_line_length_ = MAX_COMMAND_LINE_LENGTH; /*!< Maximum command line length in bytes. @since 0.6.0 */ + unsigned char previous_ = 0; /*!< Previous character that was entered on the command line. Used to detect CRLF line endings. @since 0.1.0 */ + Mode mode_ = Mode::NORMAL; /*!< Current execution mode. @since 0.1.0 */ + std::unique_ptr mode_data_ = nullptr; /*!< Data associated with the current execution mode. @since 0.1.0 */ + bool stopped_ = false; /*!< Indicates that the shell has been stopped. @since 0.1.0 */ bool prompt_displayed_ = false; /*!< Indicates that a command prompt has been displayed, so that the output of invoke_command() is correct. @since 0.1.0 */ uint64_t idle_time_ = 0; /*!< Time the shell became idle. @since 0.7.0 */ uint64_t idle_timeout_ = 0; /*!< Idle timeout (in milliseconds). @since 0.7.0 */ @@ -1786,7 +1787,7 @@ class CommandLine { * @return A reference to the parameters. * @since 0.6.0 */ - inline std::vector & operator*() { + inline std::vector> & operator*() { return parameters_; } /** @@ -1795,7 +1796,7 @@ class CommandLine { * @return A reference to the parameters. * @since 0.6.0 */ - inline const std::vector & operator*() const { + inline const std::vector> & operator*() const { return parameters_; } /** @@ -1804,7 +1805,7 @@ class CommandLine { * @return A pointer to the parameters. * @since 0.4.0 */ - inline std::vector * operator->() { + inline std::vector> * operator->() { return ¶meters_; } /** @@ -1813,7 +1814,7 @@ class CommandLine { * @return A pointer to the parameters. * @since 0.4.0 */ - inline const std::vector * operator->() const { + inline const std::vector> * operator->() const { return ¶meters_; } @@ -1843,8 +1844,8 @@ class CommandLine { bool trailing_space = false; /*!< Command line has a trailing space. @since 0.4.0 */ private: - std::vector parameters_; /*!< Separate command line parameters. @since 0.4.0 */ - size_t escape_parameters_ = std::numeric_limits::max(); /*!< Number of initial arguments to escape in output. @since 0.5.0 */ + std::vector> parameters_; /*!< Separate command line parameters. @since 0.4.0 */ + size_t escape_parameters_ = std::numeric_limits::max(); /*!< Number of initial arguments to escape in output. @since 0.5.0 */ }; /** diff --git a/lib/uuid-log/src/log.cpp b/lib/uuid-log/src/log.cpp index b10a4ba6a..2515a8b10 100644 --- a/lib/uuid-log/src/log.cpp +++ b/lib/uuid-log/src/log.cpp @@ -232,7 +232,7 @@ void Logger::vlog(Level level, const char * format, va_list ap) const { } void Logger::vlog(Level level, Facility facility, const char * format, va_list ap) const { - std::vector text(MAX_LOG_LENGTH + 1); + std::vector> text(MAX_LOG_LENGTH + 1); if (vsnprintf(text.data(), text.size(), format, ap) <= 0) { return; @@ -241,7 +241,7 @@ void Logger::vlog(Level level, Facility facility, const char * format, va_list a dispatch(level, facility, text); } -void Logger::dispatch(Level level, Facility facility, std::vector & text) const { +void Logger::dispatch(Level level, Facility facility, std::vector> & text) const { std::shared_ptr message = std::make_shared(get_uptime_ms(), level, facility, name_, text.data()); text.resize(0); diff --git a/lib/uuid-log/src/uuid/log.h b/lib/uuid-log/src/uuid/log.h index 66e932a23..beac1b189 100644 --- a/lib/uuid-log/src/uuid/log.h +++ b/lib/uuid-log/src/uuid/log.h @@ -31,6 +31,7 @@ #include #include +#include #include #ifndef UUID_COMMON_THREAD_SAFE @@ -645,7 +646,7 @@ class Logger { * @param[in] text Log message text. * @since 1.0.0 */ - void dispatch(Level level, Facility facility, std::vector & text) const; + void dispatch(Level level, Facility facility, std::vector> & text) const; static std::atomic global_level_; /*!< Minimum global log level across all handlers. @since 3.0.0 */ #if UUID_LOG_THREAD_SAFE @@ -723,7 +724,7 @@ class PrintHandler : public uuid::log::Handler { mutable std::mutex mutex_; /*!< Mutex for configuration, state and queued log messages. @since 2.3.0 */ #endif size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum number of log messages to buffer before they are output. @since 2.2.0 */ - std::list> log_messages_; /*!< Queued log messages, in the order they were received. @since 2.2.0 */ + std::list, AllocatorPSRAM>> log_messages_; /*!< Queued log messages, in the order they were received. @since 2.2.0 */ }; } // namespace log diff --git a/lib/uuid-syslog/src/uuid/syslog.h b/lib/uuid-syslog/src/uuid/syslog.h index a7f725238..58f91dae4 100644 --- a/lib/uuid-syslog/src/uuid/syslog.h +++ b/lib/uuid-syslog/src/uuid/syslog.h @@ -28,6 +28,7 @@ #include #include +#include #include #ifndef UUID_LOG_THREAD_SAFE @@ -321,7 +322,7 @@ class SyslogService : public uuid::log::Handler { #endif size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum number of log messages to buffer before they are output. @since 1.0.0 */ unsigned long log_message_id_ = 0; /*!< The next identifier to use for queued log messages. @since 1.0.0 */ - std::list log_messages_; /*!< Queued log messages, in the order they were received. @since 1.0.0 */ + std::list> log_messages_; /*!< Queued log messages, in the order they were received. @since 1.0.0 */ uint64_t mark_interval_ = 0; /*!< Mark interval in milliseconds. @since 2.0.0 */ uint64_t last_message_ = 0; /*!< Last message/mark time. @since 2.0.0 */ diff --git a/lib/uuid-telnet/src/stream.cpp b/lib/uuid-telnet/src/stream.cpp index adf5f16ec..c59b02787 100644 --- a/lib/uuid-telnet/src/stream.cpp +++ b/lib/uuid-telnet/src/stream.cpp @@ -249,7 +249,7 @@ size_t TelnetStream::write(uint8_t data) { } size_t TelnetStream::write(const uint8_t * buffer, size_t size) { - std::vector data; + std::vector> data; data.reserve(size); while (size-- > 0) { @@ -310,7 +310,7 @@ size_t TelnetStream::raw_write(unsigned char data) { return 1; } -size_t TelnetStream::raw_write(const std::vector & data) { +size_t TelnetStream::raw_write(const std::vector> & data) { return raw_write(reinterpret_cast(data.data()), data.size()); } diff --git a/lib/uuid-telnet/src/uuid/telnet.h b/lib/uuid-telnet/src/uuid/telnet.h index fb1245de9..a679859b7 100644 --- a/lib/uuid-telnet/src/uuid/telnet.h +++ b/lib/uuid-telnet/src/uuid/telnet.h @@ -33,6 +33,7 @@ #include #include +#include #include namespace uuid { @@ -203,7 +204,7 @@ class TelnetStream : public ::Stream { * @return The number of bytes that were output. * @since 0.1.0 */ - size_t raw_write(const std::vector & data); + size_t raw_write(const std::vector> & data); /** * Write an array of bytes directly to the output stream. * @@ -222,7 +223,7 @@ class TelnetStream : public ::Stream { unsigned char previous_in_ = 0; /*!< Previous character that was received. Used to detect CR NUL. @since 0.1.0 */ unsigned char previous_out_ = 0; /*!< Previous character that was sent. Used to insert NUL after CR without LF. @since 0.1.0 */ int peek_ = -1; /*!< Previously read data cached by peek(). @since 0.1.0 */ - std::vector output_buffer_; /*!< Buffer data to be output until a read function is called. @since 0.1.0 */ + std::vector> output_buffer_; /*!< Buffer data to be output until a read function is called. @since 0.1.0 */ }; /** @@ -425,7 +426,7 @@ class TelnetService { WiFiServer server_; /*!< TCP server. @since 0.1.0 */ size_t maximum_connections_ = MAX_CONNECTIONS; /*!< Maximum number of concurrent open connections. @since 0.1.0 */ - std::list connections_; /*!< Open connections. @since 0.1.0 */ + std::list> connections_; /*!< Open connections. @since 0.1.0 */ shell_factory_function shell_factory_; /*!< Function to create a shell. @since 0.1.0 */ unsigned long initial_idle_timeout_ = DEFAULT_IDLE_TIMEOUT; /*!< Initial idle timeout (in seconds). @since 0.1.0 */ unsigned long write_timeout_ = DEFAULT_WRITE_TIMEOUT; /*!< Write timeout (in milliseconds). @since 0.1.0 */ From 038f06e59fad22f961afbc9a86dd51e1b412659c Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 22 Jan 2026 16:39:14 +0100 Subject: [PATCH 008/162] show psram on startup --- src/web/WebSettingsService.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/web/WebSettingsService.cpp b/src/web/WebSettingsService.cpp index 5d2dc0354..03d5e95ee 100644 --- a/src/web/WebSettingsService.cpp +++ b/src/web/WebSettingsService.cpp @@ -496,7 +496,15 @@ void WebSettings::set_board_profile(WebSettings & settings) { System::load_board_profile(data, settings.board_profile.c_str()); } - EMSESP::logger().info("Loaded board profile %s", settings.board_profile.c_str()); +// log board profile and PSRAM info +#ifndef EMSESP_STANDALONE + uint32_t psram_size = ESP.getPsramSize() / 1024; // in KB + if (psram_size > 0) { + EMSESP::logger().info("Loaded board profile %s, PSRAM: %lu KB", settings.board_profile.c_str(), psram_size); + } else { + EMSESP::logger().info("Loaded board profile %s, PSRAM: not available", settings.board_profile.c_str()); + } +#endif // apply the new board profile settings // 0=led, 1=dallas, 2=rx, 3=tx, 4=button, 5=phy_type, 6=eth_power, 7=eth_phy_addr, 8=eth_clock_mode, 9=led_type From e0a26a38fa90a259ce0e6b795878b2ce9df9f2fb Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 22 Jan 2026 16:40:05 +0100 Subject: [PATCH 009/162] replace unordered_map with map, less heap --- src/core/command.h | 8 ++++---- src/core/emsdevice.cpp | 4 ++-- src/core/emsdevice.h | 2 +- src/core/emsesp.h | 2 +- src/core/emsfactory.h | 6 +++--- src/core/system.cpp | 4 ++-- src/devices/connect.h | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/core/command.h b/src/core/command.h index 61fcb9c49..6ab6b1230 100644 --- a/src/core/command.h +++ b/src/core/command.h @@ -19,7 +19,7 @@ #ifndef EMSESP_COMMAND_H_ #define EMSESP_COMMAND_H_ -#include +#include #include "console.h" #include @@ -153,8 +153,8 @@ class Command { class SUrlParser { private: - std::unordered_map m_keysvalues; - std::vector m_folders; + std::map m_keysvalues; + std::vector m_folders; public: SUrlParser() = default; @@ -166,7 +166,7 @@ class SUrlParser { return m_folders; }; - std::unordered_map & params() { + std::map & params() { return m_keysvalues; }; diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index 29f0cdffb..7e96e4479 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -1720,8 +1720,8 @@ void EMSdevice::get_value_json(JsonObject json, DeviceValue & dv) { // generate Prometheus metrics format from device values std::string EMSdevice::get_metrics_prometheus(const int8_t tag) { - std::string result; - std::unordered_map seen_metrics; + std::string result; + std::map seen_metrics; // Helper function to check if a device value type is supported for Prometheus metrics auto is_supported_type = [](uint8_t type) -> bool { diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index efd535693..93675ade7 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -26,7 +26,7 @@ #include "emsdevicevalue.h" #include -#include +#include namespace emsesp { diff --git a/src/core/emsesp.h b/src/core/emsesp.h index b3ed04267..416c1bea7 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/core/emsfactory.h b/src/core/emsfactory.h index 8f7f400f0..44e78b607 100644 --- a/src/core/emsfactory.h +++ b/src/core/emsfactory.h @@ -20,7 +20,7 @@ #define EMSESP_EMSFACTORY_H_ #include // for unique_ptr -#include +#include // Forward declaration namespace emsesp { @@ -45,7 +45,7 @@ class EMSFactory { reg[device_type] = factory; } - using FactoryMap = std::unordered_map; + using FactoryMap = std::map; // returns all registered classes (really only for debugging) static auto device_handlers() -> const FactoryMap & { @@ -76,7 +76,7 @@ class EMSFactory { static auto makeRaw(const uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) -> EMSdevice * { auto & reg = EMSFactory::getRegister(); - auto it = reg.find(device_type); + auto it = reg.find(device_type); if (it != reg.end()) { return it->second->construct(device_type, device_id, product_id, version, name, flags, brand); } diff --git a/src/core/system.cpp b/src/core/system.cpp index d031a05f2..f523c68b7 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1761,8 +1761,8 @@ void System::get_value_json(JsonObject output, const std::string & circuit, cons // generate Prometheus metrics format from system values std::string System::get_metrics_prometheus() { - std::string result; - std::unordered_map seen_metrics; + std::string result; + std::map seen_metrics; result.reserve(16000); diff --git a/src/devices/connect.h b/src/devices/connect.h index ea846c2b8..bbe647119 100644 --- a/src/devices/connect.h +++ b/src/devices/connect.h @@ -68,7 +68,7 @@ class Connect : public EMSdevice { bool set_childlock(const char * value, const int8_t id); bool set_icon(const char * value, const int8_t id); - std::vector> room_circuits_; + std::vector, AllocatorPSRAM>> room_circuits_; void process_OutdoorTemp(std::shared_ptr telegram); void process_RCTime(std::shared_ptr telegram); From 97c89d1d139b925b27e7a7a167b127dbbf558ae6 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 22 Jan 2026 16:40:15 +0100 Subject: [PATCH 010/162] add psram --- src/devices/thermostat.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 2bc1e18fc..a5da5f73f 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -244,16 +244,16 @@ class Thermostat : public EMSdevice { } // each thermostat has a list of heating controller type IDs for reading and writing - std::vector monitor_typeids; - std::vector set_typeids; - std::vector set2_typeids; - std::vector timer_typeids; - std::vector timer2_typeids; - std::vector summer_typeids; - std::vector summer2_typeids; - std::vector curve_typeids; - std::vector hp_typeids; - std::vector hpmode_typeids; + std::vector> monitor_typeids; + std::vector> set_typeids; + std::vector> set2_typeids; + std::vector> timer_typeids; + std::vector> timer2_typeids; + std::vector> summer_typeids; + std::vector> summer2_typeids; + std::vector> curve_typeids; + std::vector> hp_typeids; + std::vector> hpmode_typeids; // standard for all thermostats char status_[20]; // online or offline @@ -305,8 +305,8 @@ class Thermostat : public EMSdevice { uint8_t pvRaiseHeat_; uint8_t pvLowerCool_; - std::vector> heating_circuits_; // each thermostat can have multiple heating circuits - std::vector> dhw_circuits_; // each thermostat can have multiple dhw circuits + std::vector, AllocatorPSRAM>> heating_circuits_; // each thermostat can have multiple heating circuits + std::vector, AllocatorPSRAM>> dhw_circuits_; // each thermostat can have multiple dhw circuits // Generic Types static constexpr uint16_t EMS_TYPE_RCTime = 0x06; // time From f671d7928079470f605a704ae7004cff1846a058 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 22 Jan 2026 16:40:37 +0100 Subject: [PATCH 011/162] package update --- interface/package.json | 12 +- interface/pnpm-lock.yaml | 566 +++++++++++++++++++-------------------- mock-api/package.json | 4 +- mock-api/pnpm-lock.yaml | 24 +- 4 files changed, 303 insertions(+), 303 deletions(-) diff --git a/interface/package.json b/interface/package.json index 2f170ed3b..758e937c3 100644 --- a/interface/package.json +++ b/interface/package.json @@ -30,7 +30,7 @@ "@mui/material": "^7.3.7", "@preact/compat": "^18.3.1", "@table-library/react-table-library": "4.1.15", - "alova": "3.4.1", + "alova": "3.5.0", "async-validator": "^4.2.5", "etag": "^1.8.1", "formidable": "^3.5.4", @@ -52,20 +52,20 @@ "@preact/compat": "^18.3.1", "@preact/preset-vite": "^2.10.2", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.0.9", - "@types/react": "^19.2.8", + "@types/node": "^25.0.10", + "@types/react": "^19.2.9", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", "concurrently": "^9.2.1", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", - "prettier": "^3.8.0", + "prettier": "^3.8.1", "rollup-plugin-visualizer": "^6.0.5", "terser": "^5.46.0", - "typescript-eslint": "^8.53.0", + "typescript-eslint": "^8.53.1", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.0.4" }, - "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48" + "packageManager": "pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 37a101f1c..ddcf3d784 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -10,28 +10,28 @@ importers: dependencies: '@alova/adapter-xhr': specifier: 2.3.1 - version: 2.3.1(alova@3.4.1) + version: 2.3.1(alova@3.5.0) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.2.8)(react@19.2.3) + version: 11.14.0(@types/react@19.2.9)(react@19.2.3) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) '@mui/icons-material': specifier: ^7.3.7 - version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.8)(react@19.2.3) + version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) '@mui/material': specifier: ^7.3.7 - version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@preact/compat': specifier: ^18.3.1 version: 18.3.1(preact@10.28.2) '@table-library/react-table-library': specifier: 4.1.15 - version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) alova: - specifier: 3.4.1 - version: 3.4.1 + specifier: 3.5.0 + version: 3.5.0 async-validator: specifier: ^4.2.5 version: 4.2.5 @@ -83,19 +83,19 @@ importers: version: 9.39.2 '@preact/preset-vite': specifier: ^2.10.2 - version: 2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) + version: 2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.8.0) + version: 6.0.2(prettier@3.8.1) '@types/node': - specifier: ^25.0.9 - version: 25.0.9 + specifier: ^25.0.10 + version: 25.0.10 '@types/react': - specifier: ^19.2.8 - version: 19.2.8 + specifier: ^19.2.9 + version: 19.2.9 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.8) + version: 19.2.3(@types/react@19.2.9) axe-core: specifier: ^4.11.1 version: 4.11.1 @@ -109,26 +109,26 @@ importers: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2) prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 rollup-plugin-visualizer: specifier: ^6.0.5 - version: 6.0.5(rollup@4.55.1) + version: 6.0.5(rollup@4.56.0) terser: specifier: ^5.46.0 version: 5.46.0 typescript-eslint: - specifier: ^8.53.0 - version: 8.53.0(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.53.1 + version: 8.53.1(eslint@9.39.2)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.0.9)(terser@5.46.0) + version: 7.3.1(@types/node@25.0.10)(terser@5.46.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) + version: 0.6.1(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) vite-tsconfig-paths: specifier: ^6.0.4 - version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) + version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) packages: @@ -679,128 +679,128 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/rollup-android-arm-eabi@4.55.1': - resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} + '@rollup/rollup-android-arm-eabi@4.56.0': + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.55.1': - resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} + '@rollup/rollup-android-arm64@4.56.0': + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.55.1': - resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} + '@rollup/rollup-darwin-arm64@4.56.0': + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.55.1': - resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} + '@rollup/rollup-darwin-x64@4.56.0': + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.55.1': - resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} + '@rollup/rollup-freebsd-arm64@4.56.0': + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.1': - resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} + '@rollup/rollup-freebsd-x64@4.56.0': + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': - resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.55.1': - resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} + '@rollup/rollup-linux-arm-musleabihf@4.56.0': + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.55.1': - resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} + '@rollup/rollup-linux-arm64-gnu@4.56.0': + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.55.1': - resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} + '@rollup/rollup-linux-arm64-musl@4.56.0': + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.55.1': - resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} + '@rollup/rollup-linux-loong64-gnu@4.56.0': + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.55.1': - resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + '@rollup/rollup-linux-loong64-musl@4.56.0': + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.55.1': - resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} + '@rollup/rollup-linux-ppc64-gnu@4.56.0': + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.55.1': - resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + '@rollup/rollup-linux-ppc64-musl@4.56.0': + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.55.1': - resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} + '@rollup/rollup-linux-riscv64-gnu@4.56.0': + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.55.1': - resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} + '@rollup/rollup-linux-riscv64-musl@4.56.0': + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.55.1': - resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} + '@rollup/rollup-linux-s390x-gnu@4.56.0': + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.55.1': - resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} + '@rollup/rollup-linux-x64-gnu@4.56.0': + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.55.1': - resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} + '@rollup/rollup-linux-x64-musl@4.56.0': + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.55.1': - resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + '@rollup/rollup-openbsd-x64@4.56.0': + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.55.1': - resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} + '@rollup/rollup-openharmony-arm64@4.56.0': + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.55.1': - resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} + '@rollup/rollup-win32-arm64-msvc@4.56.0': + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.1': - resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} + '@rollup/rollup-win32-ia32-msvc@4.56.0': + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.1': - resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} + '@rollup/rollup-win32-x64-gnu@4.56.0': + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.1': - resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} + '@rollup/rollup-win32-x64-msvc@4.56.0': + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} cpu: [x64] os: [win32] @@ -875,8 +875,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.0.9': - resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==} + '@types/node@25.0.10': + resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -894,8 +894,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.2.8': - resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==} + '@types/react@19.2.9': + resolution: {integrity: sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -903,63 +903,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.53.0': - resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} + '@typescript-eslint/eslint-plugin@8.53.1': + resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.53.0 + '@typescript-eslint/parser': ^8.53.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.53.0': - resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} + '@typescript-eslint/parser@8.53.1': + resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.53.0': - resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} + '@typescript-eslint/project-service@8.53.1': + resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.53.0': - resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} + '@typescript-eslint/scope-manager@8.53.1': + resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.53.0': - resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} + '@typescript-eslint/tsconfig-utils@8.53.1': + resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.53.0': - resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} + '@typescript-eslint/type-utils@8.53.1': + resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.53.0': - resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} + '@typescript-eslint/types@8.53.1': + resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.53.0': - resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} + '@typescript-eslint/typescript-estree@8.53.1': + resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.53.0': - resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} + '@typescript-eslint/utils@8.53.1': + resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.53.0': - resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} + '@typescript-eslint/visitor-keys@8.53.1': + resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -975,8 +975,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - alova@3.4.1: - resolution: {integrity: sha512-xGChKIiCHDqcMglF9RyuWAsk+ltwnja8Dp4MgRIRbUlhOi8XFiQnaoWwIQzJcODKeblmmiFAK7YrYnpskFZWLA==} + alova@3.5.0: + resolution: {integrity: sha512-G3jdC9AQ6QzHKNO7X/J68kcS8rDtwjhruRb2WcxGOi78k5oU+1aGRIiGroqJbVqHQvh1HWgY6IFzyI6PY9J9Eg==} engines: {node: '>= 18.0.0'} ansi-regex@2.1.1: @@ -1042,8 +1042,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.15: - resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==} + baseline-browser-mapping@2.9.17: + resolution: {integrity: sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==} hasBin: true bin-build@3.0.0: @@ -1132,8 +1132,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001764: - resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} + caniuse-lite@1.0.30001765: + resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1352,8 +1352,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + electron-to-chromium@1.5.277: + resolution: {integrity: sha512-wKXFZw4erWmmOz5N/grBoJ2XrNJGDFMu2+W5ACHza5rHtvsqrK4gb6rnLC7XxKB9WlJ+RmyQatuEXmtm86xbnw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2134,8 +2134,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.22: - resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -2490,8 +2490,8 @@ packages: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} - prettier@3.8.0: - resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -2640,8 +2640,8 @@ packages: rollup: optional: true - rollup@4.55.1: - resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} + rollup@4.56.0: + resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2939,8 +2939,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.53.0: - resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} + typescript-eslint@8.53.1: + resolution: {integrity: sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3110,10 +3110,10 @@ packages: snapshots: - '@alova/adapter-xhr@2.3.1(alova@3.4.1)': + '@alova/adapter-xhr@2.3.1(alova@3.5.0)': dependencies: '@alova/shared': 1.3.2 - alova: 3.4.1 + alova: 3.5.0 '@alova/shared@1.3.2': {} @@ -3280,7 +3280,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3)': + '@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 @@ -3292,7 +3292,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.2.3 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 transitivePeerDependencies: - supports-color @@ -3306,18 +3306,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3) + '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3) '@emotion/utils': 1.4.2 react: 19.2.3 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 transitivePeerDependencies: - supports-color @@ -3501,23 +3501,23 @@ snapshots: '@mui/core-downloads-tracker@7.3.7': {} - '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)': + '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.9)(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 - '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 '@mui/core-downloads-tracker': 7.3.7 - '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3) - '@mui/types': 7.4.10(@types/react@19.2.8) - '@mui/utils': 7.3.7(@types/react@19.2.8)(react@19.2.3) + '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) + '@mui/types': 7.4.10(@types/react@19.2.9) + '@mui/utils': 7.3.7(@types/react@19.2.9)(react@19.2.3) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.2.8) + '@types/react-transition-group': 4.4.12(@types/react@19.2.9) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 @@ -3526,20 +3526,20 @@ snapshots: react-is: 19.2.3 react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3) - '@types/react': 19.2.8 + '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) + '@types/react': 19.2.9 - '@mui/private-theming@7.3.7(@types/react@19.2.8)(react@19.2.3)': + '@mui/private-theming@7.3.7(@types/react@19.2.9)(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 - '@mui/utils': 7.3.7(@types/react@19.2.8)(react@19.2.3) + '@mui/utils': 7.3.7(@types/react@19.2.9)(react@19.2.3) prop-types: 15.8.1 react: 19.2.3 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 - '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(react@19.2.3)': + '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 '@emotion/cache': 11.14.0 @@ -3549,42 +3549,42 @@ snapshots: prop-types: 15.8.1 react: 19.2.3 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3) + '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) - '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)': + '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 - '@mui/private-theming': 7.3.7(@types/react@19.2.8)(react@19.2.3) - '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(react@19.2.3) - '@mui/types': 7.4.10(@types/react@19.2.8) - '@mui/utils': 7.3.7(@types/react@19.2.8)(react@19.2.3) + '@mui/private-theming': 7.3.7(@types/react@19.2.9)(react@19.2.3) + '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(react@19.2.3) + '@mui/types': 7.4.10(@types/react@19.2.9) + '@mui/utils': 7.3.7(@types/react@19.2.9)(react@19.2.3) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 react: 19.2.3 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3) - '@types/react': 19.2.8 + '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) + '@types/react': 19.2.9 - '@mui/types@7.4.10(@types/react@19.2.8)': + '@mui/types@7.4.10(@types/react@19.2.9)': dependencies: '@babel/runtime': 7.28.6 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 - '@mui/utils@7.3.7(@types/react@19.2.8)(react@19.2.3)': + '@mui/utils@7.3.7(@types/react@19.2.9)(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 - '@mui/types': 7.4.10(@types/react@19.2.8) + '@mui/types': 7.4.10(@types/react@19.2.9) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 19.2.3 react-is: 19.2.3 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 '@noble/hashes@1.8.0': {} @@ -3610,18 +3610,18 @@ snapshots: dependencies: preact: 10.28.2 - '@preact/preset-vite@2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0))': dependencies: '@babel/core': 7.28.6 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.6) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.6) - '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) + '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.6) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)) + vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) transitivePeerDependencies: - preact - supports-color @@ -3634,7 +3634,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0))': + '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0))': dependencies: '@babel/core': 7.28.6 '@prefresh/babel-plugin': 0.5.2 @@ -3642,7 +3642,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.28.2 - vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) + vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) transitivePeerDependencies: - supports-color @@ -3651,103 +3651,103 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/rollup-android-arm-eabi@4.55.1': + '@rollup/rollup-android-arm-eabi@4.56.0': optional: true - '@rollup/rollup-android-arm64@4.55.1': + '@rollup/rollup-android-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-arm64@4.55.1': + '@rollup/rollup-darwin-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-x64@4.55.1': + '@rollup/rollup-darwin-x64@4.56.0': optional: true - '@rollup/rollup-freebsd-arm64@4.55.1': + '@rollup/rollup-freebsd-arm64@4.56.0': optional: true - '@rollup/rollup-freebsd-x64@4.55.1': + '@rollup/rollup-freebsd-x64@4.56.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.1': + '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.1': + '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.55.1': + '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.1': + '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.55.1': + '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.1': + '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.1': + '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.1': + '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.1': + '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.1': + '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.55.1': + '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-musl@4.55.1': + '@rollup/rollup-linux-x64-musl@4.56.0': optional: true - '@rollup/rollup-openbsd-x64@4.55.1': + '@rollup/rollup-openbsd-x64@4.56.0': optional: true - '@rollup/rollup-openharmony-arm64@4.55.1': + '@rollup/rollup-openharmony-arm64@4.56.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.1': + '@rollup/rollup-win32-arm64-msvc@4.56.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.1': + '@rollup/rollup-win32-ia32-msvc@4.56.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.55.1': + '@rollup/rollup-win32-x64-gnu@4.56.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.55.1': + '@rollup/rollup-win32-x64-msvc@4.56.0': optional: true '@sindresorhus/is@0.7.0': {} - '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3) + '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) clsx: 1.1.1 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) react-virtualized-auto-sizer: 1.0.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-window: 1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.0)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: '@babel/generator': 7.28.6 '@babel/parser': 7.28.6 '@babel/traverse': 7.28.6 '@babel/types': 7.28.6 javascript-natural-sort: 0.7.1 - lodash-es: 4.17.22 + lodash-es: 4.17.23 minimatch: 9.0.5 parse-imports-exports: 0.2.4 - prettier: 3.8.0 + prettier: 3.8.1 transitivePeerDependencies: - supports-color @@ -3758,7 +3758,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.0.9 + '@types/node': 25.0.10 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3787,19 +3787,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.0.9 + '@types/node': 25.0.10 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.0.9 + '@types/node': 25.0.10 '@types/minimatch@6.0.0': dependencies: minimatch: 10.1.1 - '@types/node@25.0.9': + '@types/node@25.0.10': dependencies: undici-types: 7.16.0 @@ -3807,34 +3807,34 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@19.2.3(@types/react@19.2.8)': + '@types/react-dom@19.2.3(@types/react@19.2.9)': dependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 - '@types/react-transition-group@4.4.12(@types/react@19.2.8)': + '@types/react-transition-group@4.4.12(@types/react@19.2.9)': dependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 - '@types/react@19.2.8': + '@types/react@19.2.9': dependencies: csstype: 3.2.3 '@types/responselike@1.0.3': dependencies: - '@types/node': 25.0.9 + '@types/node': 25.0.10 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.0.9 + '@types/node': 25.0.10 - '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.53.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3843,41 +3843,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.53.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) - '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.53.0': + '@typescript-eslint/scope-manager@8.53.1': dependencies: - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 - '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3885,14 +3885,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.53.0': {} + '@typescript-eslint/types@8.53.1': {} - '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -3902,20 +3902,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.53.0': + '@typescript-eslint/visitor-keys@8.53.1': dependencies: - '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 acorn-jsx@5.3.2(acorn@8.15.0): @@ -3931,7 +3931,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - alova@3.4.1: + alova@3.5.0: dependencies: '@alova/shared': 1.3.2 rate-limiter-flexible: 5.0.5 @@ -3982,7 +3982,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.9.15: {} + baseline-browser-mapping@2.9.17: {} bin-build@3.0.0: dependencies: @@ -4039,9 +4039,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.15 - caniuse-lite: 1.0.30001764 - electron-to-chromium: 1.5.267 + baseline-browser-mapping: 2.9.17 + caniuse-lite: 1.0.30001765 + electron-to-chromium: 1.5.277 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4099,7 +4099,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001764: {} + caniuse-lite@1.0.30001765: {} caw@2.0.1: dependencies: @@ -4386,7 +4386,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.267: {} + electron-to-chromium@1.5.277: {} emoji-regex@8.0.0: {} @@ -5184,7 +5184,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.22: {} + lodash-es@4.17.23: {} lodash.merge@4.6.2: {} @@ -5505,7 +5505,7 @@ snapshots: prepend-http@2.0.0: {} - prettier@3.8.0: {} + prettier@3.8.1: {} process-nextick-args@2.0.1: {} @@ -5638,44 +5638,44 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-visualizer@6.0.5(rollup@4.55.1): + rollup-plugin-visualizer@6.0.5(rollup@4.56.0): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 4.55.1 + rollup: 4.56.0 - rollup@4.55.1: + rollup@4.56.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.1 - '@rollup/rollup-android-arm64': 4.55.1 - '@rollup/rollup-darwin-arm64': 4.55.1 - '@rollup/rollup-darwin-x64': 4.55.1 - '@rollup/rollup-freebsd-arm64': 4.55.1 - '@rollup/rollup-freebsd-x64': 4.55.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 - '@rollup/rollup-linux-arm-musleabihf': 4.55.1 - '@rollup/rollup-linux-arm64-gnu': 4.55.1 - '@rollup/rollup-linux-arm64-musl': 4.55.1 - '@rollup/rollup-linux-loong64-gnu': 4.55.1 - '@rollup/rollup-linux-loong64-musl': 4.55.1 - '@rollup/rollup-linux-ppc64-gnu': 4.55.1 - '@rollup/rollup-linux-ppc64-musl': 4.55.1 - '@rollup/rollup-linux-riscv64-gnu': 4.55.1 - '@rollup/rollup-linux-riscv64-musl': 4.55.1 - '@rollup/rollup-linux-s390x-gnu': 4.55.1 - '@rollup/rollup-linux-x64-gnu': 4.55.1 - '@rollup/rollup-linux-x64-musl': 4.55.1 - '@rollup/rollup-openbsd-x64': 4.55.1 - '@rollup/rollup-openharmony-arm64': 4.55.1 - '@rollup/rollup-win32-arm64-msvc': 4.55.1 - '@rollup/rollup-win32-ia32-msvc': 4.55.1 - '@rollup/rollup-win32-x64-gnu': 4.55.1 - '@rollup/rollup-win32-x64-msvc': 4.55.1 + '@rollup/rollup-android-arm-eabi': 4.56.0 + '@rollup/rollup-android-arm64': 4.56.0 + '@rollup/rollup-darwin-arm64': 4.56.0 + '@rollup/rollup-darwin-x64': 4.56.0 + '@rollup/rollup-freebsd-arm64': 4.56.0 + '@rollup/rollup-freebsd-x64': 4.56.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 + '@rollup/rollup-linux-arm-musleabihf': 4.56.0 + '@rollup/rollup-linux-arm64-gnu': 4.56.0 + '@rollup/rollup-linux-arm64-musl': 4.56.0 + '@rollup/rollup-linux-loong64-gnu': 4.56.0 + '@rollup/rollup-linux-loong64-musl': 4.56.0 + '@rollup/rollup-linux-ppc64-gnu': 4.56.0 + '@rollup/rollup-linux-ppc64-musl': 4.56.0 + '@rollup/rollup-linux-riscv64-gnu': 4.56.0 + '@rollup/rollup-linux-riscv64-musl': 4.56.0 + '@rollup/rollup-linux-s390x-gnu': 4.56.0 + '@rollup/rollup-linux-x64-gnu': 4.56.0 + '@rollup/rollup-linux-x64-musl': 4.56.0 + '@rollup/rollup-openbsd-x64': 4.56.0 + '@rollup/rollup-openharmony-arm64': 4.56.0 + '@rollup/rollup-win32-arm64-msvc': 4.56.0 + '@rollup/rollup-win32-ia32-msvc': 4.56.0 + '@rollup/rollup-win32-x64-gnu': 4.56.0 + '@rollup/rollup-win32-x64-msvc': 4.56.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -5939,12 +5939,12 @@ snapshots: dependencies: typescript: 5.9.3 - typescript-eslint@8.53.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.53.1(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.53.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -5990,7 +5990,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6015,11 +6015,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) + vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6027,29 +6027,29 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) + vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) - vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.9)(terser@5.46.0)): + vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 7.3.1(@types/node@25.0.9)(terser@5.46.0) + vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.0.9)(terser@5.46.0): + vite@7.3.1(@types/node@25.0.10)(terser@5.46.0): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.55.1 + rollup: 4.56.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.0.9 + '@types/node': 25.0.10 fsevents: 2.3.3 terser: 5.46.0 diff --git a/mock-api/package.json b/mock-api/package.json index d384e9bb8..8f7388e14 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -13,7 +13,7 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "formidable": "^3.5.4", "itty-router": "^5.0.22", - "prettier": "^3.8.0" + "prettier": "^3.8.1" }, - "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48" + "packageManager": "pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index 9bfb93058..e717c29eb 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 3.1.3 '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.8.0) + version: 6.0.2(prettier@3.8.1) formidable: specifier: ^3.5.4 version: 3.5.4 @@ -21,8 +21,8 @@ importers: specifier: ^5.0.22 version: 5.0.22 prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 packages: @@ -145,8 +145,8 @@ packages: engines: {node: '>=6'} hasBin: true - lodash-es@4.17.22: - resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} @@ -167,8 +167,8 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - prettier@3.8.0: - resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -246,17 +246,17 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.0)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: '@babel/generator': 7.28.6 '@babel/parser': 7.28.6 '@babel/traverse': 7.28.6 '@babel/types': 7.28.6 javascript-natural-sort: 0.7.1 - lodash-es: 4.17.22 + lodash-es: 4.17.23 minimatch: 9.0.5 parse-imports-exports: 0.2.4 - prettier: 3.8.0 + prettier: 3.8.1 transitivePeerDependencies: - supports-color @@ -291,7 +291,7 @@ snapshots: jsesc@3.1.0: {} - lodash-es@4.17.22: {} + lodash-es@4.17.23: {} minimatch@9.0.5: dependencies: @@ -311,6 +311,6 @@ snapshots: picocolors@1.1.1: {} - prettier@3.8.0: {} + prettier@3.8.1: {} wrappy@1.0.2: {} From 265c2c4231062b805cc47b01e0aa9c45b43957d1 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 23 Jan 2026 12:52:55 +0100 Subject: [PATCH 012/162] 3.8.2-dev.1 --- src/emsesp_version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emsesp_version.h b/src/emsesp_version.h index f352db534..90d3b27d0 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.0" +#define EMSESP_APP_VERSION "3.8.2-dev.1" From 3e8f3795028160af27dfe2cc058fa23fb8d3461c Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 23 Jan 2026 19:35:37 +0100 Subject: [PATCH 013/162] package update --- interface/pnpm-lock.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index ddcf3d784..b83451a94 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -1132,8 +1132,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001765: - resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} + caniuse-lite@1.0.30001766: + resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1352,8 +1352,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.277: - resolution: {integrity: sha512-wKXFZw4erWmmOz5N/grBoJ2XrNJGDFMu2+W5ACHza5rHtvsqrK4gb6rnLC7XxKB9WlJ+RmyQatuEXmtm86xbnw==} + electron-to-chromium@1.5.278: + resolution: {integrity: sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4040,8 +4040,8 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.17 - caniuse-lite: 1.0.30001765 - electron-to-chromium: 1.5.277 + caniuse-lite: 1.0.30001766 + electron-to-chromium: 1.5.278 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4099,7 +4099,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001765: {} + caniuse-lite@1.0.30001766: {} caw@2.0.1: dependencies: @@ -4386,7 +4386,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.277: {} + electron-to-chromium@1.5.278: {} emoji-regex@8.0.0: {} From 9088651e53c0ec8acc912bd30c5add89a18d5fa5 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 23 Jan 2026 19:35:53 +0100 Subject: [PATCH 014/162] asyncwebserver update, improved caching --- lib_standalone/AsyncTCP.h | 156 +++++++++++++++++++++++++++++++++- platformio.ini | 2 +- src/ESP32React/ESP32React.cpp | 31 ++++--- 3 files changed, 170 insertions(+), 19 deletions(-) diff --git a/lib_standalone/AsyncTCP.h b/lib_standalone/AsyncTCP.h index 58307baab..67d733238 100644 --- a/lib_standalone/AsyncTCP.h +++ b/lib_standalone/AsyncTCP.h @@ -19,12 +19,164 @@ class AsyncClient { class AsyncServer { public: AsyncServer(uint16_t port) - : _port(port){}; - ~AsyncServer(){}; + : _port(port) {}; + ~AsyncServer() {}; protected: uint16_t _port; }; +namespace asyncsrv { + +static constexpr const char empty[] = ""; + +static constexpr const char T__opaque[] = "\", opaque=\""; +static constexpr const char T_100_CONTINUE[] = "100-continue"; +static constexpr const char T_13[] = "13"; +static constexpr const char T_ACCEPT[] = "Accept"; +static constexpr const char T_Accept_Ranges[] = "Accept-Ranges"; +static constexpr const char T_attachment[] = "attachment; filename=\""; +static constexpr const char T_AUTH[] = "Authorization"; +static constexpr const char T_auth_nonce[] = "\", qop=\"auth\", nonce=\""; +static constexpr const char T_BASIC[] = "Basic"; +static constexpr const char T_BASIC_REALM[] = "Basic realm=\""; +static constexpr const char T_BEARER[] = "Bearer"; +static constexpr const char T_BODY[] = "body"; +static constexpr const char T_Cache_Control[] = "Cache-Control"; +static constexpr const char T_chunked[] = "chunked"; +static constexpr const char T_close[] = "close"; +static constexpr const char T_cnonce[] = "cnonce"; +static constexpr const char T_Connection[] = "Connection"; +static constexpr const char T_Content_Disposition[] = "Content-Disposition"; +static constexpr const char T_Content_Encoding[] = "Content-Encoding"; +static constexpr const char T_Content_Length[] = "Content-Length"; +static constexpr const char T_Content_Type[] = "Content-Type"; +static constexpr const char T_Content_Location[] = "Content-Location"; +static constexpr const char T_Cookie[] = "Cookie"; +static constexpr const char T_CORS_ACAC[] = "Access-Control-Allow-Credentials"; +static constexpr const char T_CORS_ACAH[] = "Access-Control-Allow-Headers"; +static constexpr const char T_CORS_ACAM[] = "Access-Control-Allow-Methods"; +static constexpr const char T_CORS_ACAO[] = "Access-Control-Allow-Origin"; +static constexpr const char T_CORS_ACMA[] = "Access-Control-Max-Age"; +static constexpr const char T_CORS_O[] = "Origin"; +static constexpr const char T_data_[] = "data: "; +static constexpr const char T_Date[] = "Date"; +static constexpr const char T_DIGEST[] = "Digest"; +static constexpr const char T_DIGEST_[] = "Digest "; +static constexpr const char T_ETag[] = "ETag"; +static constexpr const char T_event_[] = "event: "; +static constexpr const char T_EXPECT[] = "Expect"; +static constexpr const char T_FALSE[] = "false"; +static constexpr const char T_filename[] = "filename"; +static constexpr const char T_gzip[] = "gzip"; +static constexpr const char T_Host[] = "host"; +static constexpr const char T_HTTP_1_0[] = "HTTP/1.0"; +static constexpr const char T_HTTP_100_CONT[] = "HTTP/1.1 100 Continue\r\n\r\n"; +static constexpr const char T_id__[] = "id: "; +static constexpr const char T_IMS[] = "If-Modified-Since"; +static constexpr const char T_INM[] = "If-None-Match"; +static constexpr const char T_inline[] = "inline"; +static constexpr const char T_keep_alive[] = "keep-alive"; +static constexpr const char T_Last_Event_ID[] = "Last-Event-ID"; +static constexpr const char T_Last_Modified[] = "Last-Modified"; +static constexpr const char T_LOCATION[] = "Location"; +static constexpr const char T_LOGIN_REQ[] = "Login Required"; +static constexpr const char T_MULTIPART_[] = "multipart/"; +static constexpr const char T_name[] = "name"; +static constexpr const char T_nc[] = "nc"; +static constexpr const char T_no_cache[] = "no-cache"; +static constexpr const char T_nonce[] = "nonce"; +static constexpr const char T_none[] = "none"; +static constexpr const char T_opaque[] = "opaque"; +static constexpr const char T_qop[] = "qop"; +static constexpr const char T_realm[] = "realm"; +static constexpr const char T_realm__[] = "realm=\""; +static constexpr const char T_response[] = "response"; +static constexpr const char T_retry_[] = "retry: "; +static constexpr const char T_retry_after[] = "Retry-After"; +static constexpr const char T_nn[] = "\n\n"; +static constexpr const char T_rn[] = "\r\n"; +static constexpr const char T_rnrn[] = "\r\n\r\n"; +static constexpr const char T_Server[] = "Server"; +static constexpr const char T_Transfer_Encoding[] = "Transfer-Encoding"; +static constexpr const char T_TRUE[] = "true"; +static constexpr const char T_UPGRADE[] = "Upgrade"; +static constexpr const char T_uri[] = "uri"; +static constexpr const char T_username[] = "username"; +static constexpr const char T_WS[] = "websocket"; +static constexpr const char T_WWW_AUTH[] = "WWW-Authenticate"; + +// HTTP Methods +static constexpr const char T_ANY[] = "ANY"; +static constexpr const char T_GET[] = "GET"; +static constexpr const char T_POST[] = "POST"; +static constexpr const char T_PUT[] = "PUT"; +static constexpr const char T_DELETE[] = "DELETE"; +static constexpr const char T_PATCH[] = "PATCH"; +static constexpr const char T_HEAD[] = "HEAD"; +static constexpr const char T_OPTIONS[] = "OPTIONS"; +static constexpr const char T_UNKNOWN[] = "UNKNOWN"; + +// Req content types +static constexpr const char T_RCT_NOT_USED[] = "RCT_NOT_USED"; +static constexpr const char T_RCT_DEFAULT[] = "RCT_DEFAULT"; +static constexpr const char T_RCT_HTTP[] = "RCT_HTTP"; +static constexpr const char T_RCT_WS[] = "RCT_WS"; +static constexpr const char T_RCT_EVENT[] = "RCT_EVENT"; +static constexpr const char T_ERROR[] = "ERROR"; + +// extensions & MIME-Types +static constexpr const char T__avif[] = ".avif"; // AVIF: Highly compressed images. Compatible with all modern browsers. +static constexpr const char T__csv[] = ".csv"; // CSV: Data logging and configuration +static constexpr const char T__css[] = ".css"; // CSS: Styling for web interfaces +static constexpr const char T__gif[] = ".gif"; // GIF: Simple animations. Legacy support +static constexpr const char T__gz[] = ".gz"; // GZ: compressed files +static constexpr const char T__htm[] = ".htm"; // HTM: Web interface files +static constexpr const char T__html[] = ".html"; // HTML: Web interface files +static constexpr const char T__ico[] = ".ico"; // ICO: Favicons, system icons. Legacy support +static constexpr const char T__jpg[] = ".jpg"; // JPEG/JPG: Photos. Legacy support +static constexpr const char T__js[] = ".js"; // JavaScript: Interactive functionality +static constexpr const char T__json[] = ".json"; // JSON: Data exchange format +static constexpr const char T__mp4[] = ".mp4"; // MP4: Proprietary format. Worse compression than WEBM. +static constexpr const char T__mjs[] = ".mjs"; // MJS: JavaScript module format +static constexpr const char T__opus[] = ".opus"; // OPUS: High compression audio format +static constexpr const char T__pdf[] = ".pdf"; // PDF: Universal document format +static constexpr const char T__png[] = ".png"; // PNG: Icons, logos, transparency. Legacy support +static constexpr const char T__svg[] = ".svg"; // SVG: Vector graphics, icons (scalable, tiny file sizes) +static constexpr const char T__ttf[] = ".ttf"; // TTF: Font file. Legacy support +static constexpr const char T__txt[] = ".txt"; // TXT: Plain text files +static constexpr const char T__webm[] = ".webm"; // WebM: Video. Open source, optimized for web. Compatible with all modern browsers. +static constexpr const char T__webp[] = ".webp"; // WebP: Highly compressed images. Compatible with all modern browsers. +static constexpr const char T__woff[] = ".woff"; // WOFF: Font file. Legacy support +static constexpr const char T__woff2[] = ".woff2"; // WOFF2: Better compression. Compatible with all modern browsers. +static constexpr const char T__xml[] = ".xml"; // XML: Configuration and data files +static constexpr const char T_application_javascript[] = "application/javascript"; // Obsolete type for JavaScript +static constexpr const char T_application_json[] = "application/json"; +static constexpr const char T_application_msgpack[] = "application/msgpack"; +static constexpr const char T_application_octet_stream[] = "application/octet-stream"; +static constexpr const char T_application_pdf[] = "application/pdf"; +static constexpr const char T_app_xform_urlencoded[] = "application/x-www-form-urlencoded"; +static constexpr const char T_audio_opus[] = "audio/opus"; +static constexpr const char T_font_ttf[] = "font/ttf"; +static constexpr const char T_font_woff[] = "font/woff"; +static constexpr const char T_font_woff2[] = "font/woff2"; +static constexpr const char T_image_avif[] = "image/avif"; +static constexpr const char T_image_gif[] = "image/gif"; +static constexpr const char T_image_jpeg[] = "image/jpeg"; +static constexpr const char T_image_png[] = "image/png"; +static constexpr const char T_image_svg_xml[] = "image/svg+xml"; +static constexpr const char T_image_webp[] = "image/webp"; +static constexpr const char T_image_x_icon[] = "image/x-icon"; +static constexpr const char T_text_css[] = "text/css"; +static constexpr const char T_text_csv[] = "text/csv"; +static constexpr const char T_text_event_stream[] = "text/event-stream"; +static constexpr const char T_text_html[] = "text/html"; +static constexpr const char T_text_javascript[] = "text/javascript"; +static constexpr const char T_text_plain[] = "text/plain"; +static constexpr const char T_text_xml[] = "text/xml"; +static constexpr const char T_video_mp4[] = "video/mp4"; +static constexpr const char T_video_webm[] = "video/webm"; +} // namespace asyncsrv + #endif diff --git a/platformio.ini b/platformio.ini index 31ac85d60..b031b9a8f 100644 --- a/platformio.ini +++ b/platformio.ini @@ -106,7 +106,7 @@ board_build.filesystem = littlefs lib_deps = bblanchon/ArduinoJson @ 7.4.2 ESP32Async/AsyncTCP @ 3.4.10 - ESP32Async/ESPAsyncWebServer @ 3.9.4 + ESP32Async/ESPAsyncWebServer @ 3.9.5 https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 diff --git a/src/ESP32React/ESP32React.cpp b/src/ESP32React/ESP32React.cpp index 72bd28a2d..41536153f 100644 --- a/src/ESP32React/ESP32React.cpp +++ b/src/ESP32React/ESP32React.cpp @@ -2,6 +2,8 @@ #include "WWWData.h" // include auto-generated static web resources +static constexpr const char CACHE_CONTROL[] = "public,max-age=60"; + ESP32React::ESP32React(AsyncWebServer * server, FS * fs) : _securitySettingsService(server, fs) , _networkSettingsService(server, fs, &_securitySettingsService) @@ -22,21 +24,18 @@ ESP32React::ESP32React(AsyncWebServer * server, FS * fs) ArRequestHandlerFunction indexHtmlHandler = nullptr; WWWData::registerRoutes([server, &indexHtmlHandler](const char * uri, const String & contentType, const uint8_t * content, size_t len, const String & hash) { - ArRequestHandlerFunction requestHandler = [contentType, content, len, hash](AsyncWebServerRequest * request) { - AsyncWebServerResponse * response; + String etag = "\"" + hash + "\""; // RFC9110: ETag must be enclosed in double quotes - // Check if the client already has the same version and respond with a 304 (Not modified) - if (request->header("If-None-Match").equals(hash)) { - response = request->beginResponse(304); - } else { - response = request->beginResponse(200, contentType, content, len); - response->addHeader("Content-Encoding", "gzip"); // not br for brotlin only works over HTTPS + ArRequestHandlerFunction requestHandler = [contentType, content, len, etag](AsyncWebServerRequest * request) { + if (request->header(asyncsrv::T_INM) == etag) { + request->send(304); + return; } - // always send these headers - see https://datatracker.ietf.org/doc/html/rfc7232#section-4.1 - response->addHeader("ETag", hash); - response->addHeader("Cache-Control", "no-cache"); // Requires revalidation before using cached content (ETags enable 304 responses) - + AsyncWebServerResponse * response = request->beginResponse(200, contentType, content, len); + response->addHeader(asyncsrv::T_Content_Encoding, asyncsrv::T_gzip, false); + response->addHeader(asyncsrv::T_ETag, etag, false); + response->addHeader(asyncsrv::T_Cache_Control, CACHE_CONTROL, false); request->send(response); }; @@ -69,11 +68,11 @@ void ESP32React::begin() { _networkSettingsService.read([&](NetworkSettings & networkSettings) { DefaultHeaders & defaultHeaders = DefaultHeaders::Instance(); if (networkSettings.enableCORS) { - defaultHeaders.addHeader("Access-Control-Allow-Origin", networkSettings.CORSOrigin); - defaultHeaders.addHeader("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization"); - defaultHeaders.addHeader("Access-Control-Allow-Credentials", "true"); + defaultHeaders.addHeader(asyncsrv::T_CORS_ACAO, networkSettings.CORSOrigin); + defaultHeaders.addHeader(asyncsrv::T_CORS_ACAH, "Accept, Content-Type, Authorization"); + defaultHeaders.addHeader(asyncsrv::T_CORS_ACAC, "true"); } - defaultHeaders.addHeader("Server", networkSettings.hostname); + defaultHeaders.addHeader(asyncsrv::T_Server, networkSettings.hostname); }); _apSettingsService.begin(); _ntpSettingsService.begin(); From bfbb18655d4615947b5526399849624a4d4cf4e6 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 23 Jan 2026 19:37:21 +0100 Subject: [PATCH 015/162] memory optimzations --- src/core/emsfactory.h | 30 +++++++++++++----------------- src/core/shuntingYard.cpp | 16 +++++++++++----- src/web/WebSchedulerService.cpp | 14 ++++++++++---- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/core/emsfactory.h b/src/core/emsfactory.h index 44e78b607..771aad4af 100644 --- a/src/core/emsfactory.h +++ b/src/core/emsfactory.h @@ -39,23 +39,22 @@ class EMSFactory { public: virtual ~EMSFactory() = default; - // Register factory object of derived class using the device_type as the unique identifier - static auto registerFactory(const uint8_t device_type, EMSFactory * factory) -> void { - auto & reg = EMSFactory::getRegister(); - reg[device_type] = factory; - } - using FactoryMap = std::map; + // Register factory object of derived class using the device_type as the unique identifier + static inline auto registerFactory(const uint8_t device_type, EMSFactory * factory) -> void { + getRegister()[device_type] = factory; + } + // returns all registered classes (really only for debugging) - static auto device_handlers() -> const FactoryMap & { - return EMSFactory::getRegister(); + static inline auto device_handlers() -> const FactoryMap & { + return getRegister(); } // Construct derived class returning an unique ptr static auto add(const uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * default_name, uint8_t flags, uint8_t brand) -> std::unique_ptr { - if (auto * ptr = EMSFactory::makeRaw(device_type, device_id, product_id, version, default_name, flags, brand)) { + if (auto * ptr = makeRaw(device_type, device_id, product_id, version, default_name, flags, brand)) { return std::unique_ptr(ptr); } return nullptr; @@ -66,7 +65,7 @@ class EMSFactory { private: // Force global variable to be initialized, thus it avoids the "initialization order fiasco" - static auto getRegister() -> FactoryMap & { + static inline auto getRegister() -> FactoryMap & { static FactoryMap classRegister{}; return classRegister; } @@ -75,12 +74,9 @@ class EMSFactory { // find which EMS device it is and use that class static auto makeRaw(const uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) -> EMSdevice * { - auto & reg = EMSFactory::getRegister(); - auto it = reg.find(device_type); - if (it != reg.end()) { - return it->second->construct(device_type, device_id, product_id, version, name, flags, brand); - } - return nullptr; + const auto & reg = getRegister(); + const auto it = reg.find(device_type); + return (it != reg.end()) ? it->second->construct(device_type, device_id, product_id, version, name, flags, brand) : nullptr; } }; @@ -88,7 +84,7 @@ template class ConcreteEMSFactory : EMSFactory { public: // Register this global object on the EMSFactory register - ConcreteEMSFactory(const uint8_t device_type) { + explicit ConcreteEMSFactory(const uint8_t device_type) { EMSFactory::registerFactory(device_type, this); } diff --git a/src/core/shuntingYard.cpp b/src/core/shuntingYard.cpp index 62e738bfb..d90b0a9c7 100644 --- a/src/core/shuntingYard.cpp +++ b/src/core/shuntingYard.cpp @@ -344,8 +344,12 @@ bool isnum(const std::string & s) { std::string commands(std::string & expr, bool quotes) { auto expr_new = Helpers::toLower(expr); for (uint8_t device = 0; device < EMSdevice::DeviceType::UNKNOWN; device++) { - std::string d = (std::string)EMSdevice::device_type_2_device_name(device) + "/"; - auto f = expr_new.find(d); + // Optimized: build string with reserve to avoid temporary allocations + std::string d; + d.reserve(32); // typical device name length + "/" + d = EMSdevice::device_type_2_device_name(device); + d += "/"; + auto f = expr_new.find(d); while (f != std::string::npos) { // entity names are alphanumeric or _ auto e = expr_new.find_first_not_of("/._abcdefghijklmnopqrstuvwxyz0123456789", f); @@ -367,9 +371,11 @@ std::string commands(std::string & expr, bool quotes) { JsonDocument doc_in; JsonObject output = doc_out.to(); JsonObject input = doc_in.to(); - std::string cmd_s = "api/" + std::string(cmd); + // Optimized: use stack buffer for small strings to avoid heap allocation + char cmd_s[COMMAND_MAX_LENGTH + 5]; // "api/" prefix + cmd + snprintf(cmd_s, sizeof(cmd_s), "api/%s", cmd); - auto return_code = Command::process(cmd_s.c_str(), true, input, output); + auto return_code = Command::process(cmd_s, true, input, output); // check for no value (entity is valid but has no value set) if (return_code != CommandRet::OK && return_code != CommandRet::NO_VALUE) { return expr = ""; @@ -725,7 +731,7 @@ std::string compute(const std::string & expr) { // if there is data, force a POST if (value.length() || Helpers::toLower(method) == "post") { if (value.find_first_of('{') != std::string::npos) { - http.addHeader("Content-Type", "application/json"); // auto-set to JSON + http.addHeader(asyncsrv::T_Content_Type, asyncsrv::T_application_json, false); // auto-set to JSON } httpResult = http.POST(value.c_str()); } else { diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index 943d30b21..70da3063f 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -248,18 +248,24 @@ void WebSchedulerService::publish(const bool force) { snprintf(val_obj, sizeof(val_obj), "value_json['%s']", scheduleItem.name); snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); + // Optimized: use stack buffer instead of string concatenation to avoid heap allocations + char val_tpl[150]; if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) { - config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}"; + snprintf(val_tpl, sizeof(val_tpl), "{{%s if %s}}", val_obj, val_cond); } else { - config["val_tpl"] = (std::string) "{{" + val_obj + "}}"; // omit value conditional Jinja2 template code + snprintf(val_tpl, sizeof(val_tpl), "{{%s}}", val_obj); // omit value conditional Jinja2 template code } + config["val_tpl"] = val_tpl; char uniq_s[70]; snprintf(uniq_s, sizeof(uniq_s), "%s_%s", F_(scheduler), scheduleItem.name); config["uniq_id"] = uniq_s; config["name"] = (const char *)scheduleItem.name; - config["def_ent_id"] = std::string("switch.") + uniq_s; + // Optimized: use stack buffer instead of string concatenation + char def_ent_id[80]; + snprintf(def_ent_id, sizeof(def_ent_id), "switch.%s", uniq_s); + config["def_ent_id"] = def_ent_id; char topic[Mqtt::MQTT_TOPIC_MAX_SIZE]; char command_topic[Mqtt::MQTT_TOPIC_MAX_SIZE]; @@ -331,7 +337,7 @@ bool WebSchedulerService::command(const char * name, const std::string & command int httpResult = 0; if (value.length() || method == "post") { // we have all lowercase if (value.find_first_of('{') != std::string::npos) { - http.addHeader("Content-Type", "application/json"); // auto-set to JSON + http.addHeader(asyncsrv::T_Content_Type, asyncsrv::T_application_json, false); // auto-set to JSON } httpResult = http.POST(value.c_str()); } else { From 8796b6d340fa3bb2e6a79898bc402a481afd170c Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 24 Jan 2026 12:10:45 +0100 Subject: [PATCH 016/162] update dictionary --- cspell.json | 3 ++- project-words.txt | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cspell.json b/cspell.json index a0c028ab4..075f7629f 100644 --- a/cspell.json +++ b/cspell.json @@ -37,6 +37,7 @@ "pnpm-*.yaml", "vite.config.ts", "lib/esp32-psram/**", - "test/test_api/test_api.h" + "test/test_api/test_api.h", + "lib_standalone/**" ] } \ No newline at end of file diff --git a/project-words.txt b/project-words.txt index 5c880b0b8..62705f645 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1321,3 +1321,6 @@ zuluftebläse zuluftgebläse zulufttemp zyxwvutsrqponmlkjihgfedcba +ACAO +ACAH +ACAC From 5ec068409f68dd8254b686ddcf88bff3014a0467 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 24 Jan 2026 12:10:52 +0100 Subject: [PATCH 017/162] package update --- interface/package.json | 4 ++-- interface/pnpm-lock.yaml | 24 ++++++++++-------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/interface/package.json b/interface/package.json index 758e937c3..858899beb 100644 --- a/interface/package.json +++ b/interface/package.json @@ -41,7 +41,7 @@ "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0", - "react-router": "^7.12.0", + "react-router": "^7.13.0", "react-toastify": "^11.0.5", "typesafe-i18n": "^5.26.2", "typescript": "^5.9.3" @@ -65,7 +65,7 @@ "typescript-eslint": "^8.53.1", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", - "vite-tsconfig-paths": "^6.0.4" + "vite-tsconfig-paths": "^6.0.5" }, "packageManager": "pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index b83451a94..905c47d17 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -63,8 +63,8 @@ importers: specifier: ^5.5.0 version: 5.5.0(react@19.2.3) react-router: - specifier: ^7.12.0 - version: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^7.13.0 + version: 7.13.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-toastify: specifier: ^11.0.5 version: 11.0.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -127,8 +127,8 @@ importers: specifier: ^0.6.1 version: 0.6.1(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) vite-tsconfig-paths: - specifier: ^6.0.4 - version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) + specifier: ^6.0.5 + version: 6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) packages: @@ -2540,8 +2540,8 @@ packages: react-is@19.2.3: resolution: {integrity: sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==} - react-router@7.12.0: - resolution: {integrity: sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==} + react-router@7.13.0: + resolution: {integrity: sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -3003,13 +3003,10 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x - vite-tsconfig-paths@6.0.4: - resolution: {integrity: sha512-iIsEJ+ek5KqRTK17pmxtgIxXtqr3qDdE6OxrP9mVeGhVDNXRJTKN/l9oMbujTQNzMLe6XZ8qmpztfbkPu2TiFQ==} + vite-tsconfig-paths@6.0.5: + resolution: {integrity: sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig==} peerDependencies: vite: '*' - peerDependenciesMeta: - vite: - optional: true vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} @@ -5549,7 +5546,7 @@ snapshots: react-is@19.2.3: {} - react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-router@7.13.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: cookie: 1.1.1 react: 19.2.3 @@ -6029,12 +6026,11 @@ snapshots: stack-trace: 1.0.0-pre2 vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) - vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): + vite-tsconfig-paths@6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - optionalDependencies: vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) transitivePeerDependencies: - supports-color From 0e0aaf37df1039f0da1683963d1313b13001d41a Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 25 Jan 2026 19:21:59 +0100 Subject: [PATCH 018/162] add climate modes night/eco as off --- src/core/mqtt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp index 4868084fd..ea1e58f42 100644 --- a/src/core/mqtt.cpp +++ b/src/core/mqtt.cpp @@ -1446,7 +1446,7 @@ bool Mqtt::publish_ha_climate_config(const DeviceValue & dv, const bool has_room found_auto = true; } else if (!strcmp(mode, FL_(heat)[0]) || !strcmp(mode, FL_(day)[0]) || !strcmp(mode, FL_(manual)[0])) { found_heat = true; // we map day and manual to heat - } else if (!strcmp(mode, FL_(off)[0])) { + } else if (!strcmp(mode, FL_(off)[0]) || !strcmp(mode, FL_(night)[0]) || !strcmp(mode, FL_(eco)[0])) { found_off = true; } else if (!strcmp(mode, FL_(cool)[0])) { found_cool = true; From d702c485b7d0d4fa5d63e7a300897c7eace826c4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 25 Jan 2026 19:37:34 +0100 Subject: [PATCH 019/162] validate custom entity writes, #2931 --- src/web/WebCustomEntityService.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index 184085e56..8aeec4a20 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -184,13 +184,15 @@ bool WebCustomEntityService::command_setvalue(const char * value, const int8_t i dat += len; } delete[] data; + // validate telegram + EMSESP::send_read_request(entityItem.type_id, entityItem.device_id, entityItem.offset, length); return true; } else if (entityItem.value_type == DeviceValueType::BOOL) { bool v; if (!Helpers::value2bool(value, v)) { return false; } - EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v ? (uint8_t)entityItem.factor : 0, 0); + EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v ? (uint8_t)entityItem.factor : 0, entityItem.type_id); } else { float f; if (!Helpers::value2float(value, f)) { @@ -198,13 +200,13 @@ bool WebCustomEntityService::command_setvalue(const char * value, const int8_t i } int v = (f / entityItem.factor + 0.5); if (entityItem.value_type == DeviceValueType::UINT8 || entityItem.value_type == DeviceValueType::INT8) { - EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v, 0); + EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v, entityItem.type_id); } else if (entityItem.value_type == DeviceValueType::UINT16 || entityItem.value_type == DeviceValueType::INT16) { uint8_t v1[2] = {(uint8_t)(v >> 8), (uint8_t)(v & 0xFF)}; - EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v1, 2, 0); + EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v1, 2, entityItem.type_id); } else { uint8_t v1[3] = {(uint8_t)(v >> 16), (uint8_t)((v & 0xFF00) >> 8), (uint8_t)(v & 0xFF)}; - EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v1, 3, 0); + EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, v1, 3, entityItem.type_id); } } From 584618043da21a831f9b9427d7712fabc0ed4b7d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 28 Jan 2026 15:01:15 +0100 Subject: [PATCH 020/162] weblog buffer max 1000 messages with psram, syslog buffer 250 with psram --- interface/src/app/status/SystemLog.tsx | 4 +++- src/core/system.cpp | 2 +- src/web/WebSettingsService.h | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/interface/src/app/status/SystemLog.tsx b/interface/src/app/status/SystemLog.tsx index 84663c19d..0854c8cc4 100644 --- a/interface/src/app/status/SystemLog.tsx +++ b/interface/src/app/status/SystemLog.tsx @@ -38,7 +38,7 @@ import type { LogEntry, LogSettings } from 'types'; import { LogLevel } from 'types'; import { updateValueDirty, useRest } from 'utils'; -const MAX_LOG_ENTRIES = 1000; // Limit log entries to prevent memory issues +const MAX_LOG_ENTRIES = 10000; // Limit log entries to prevent memory issues const TextColors: Record = { [LogLevel.ERROR]: '#ff0000', // red @@ -308,6 +308,8 @@ const SystemLog = () => { 50 75 100 + 500 + 1000 )} diff --git a/src/core/system.cpp b/src/core/system.cpp index d031a05f2..82d52696b 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -501,7 +501,7 @@ void System::syslog_init() { #ifndef EMSESP_STANDALONE if (syslog_enabled_) { // start & configure syslog - syslog_.maximum_log_messages(10); + syslog_.maximum_log_messages(psram_ ? 250 : 10); syslog_.log_level((uuid::log::Level)syslog_level_); syslog_.mark_interval(syslog_mark_interval_); syslog_.destination(syslog_host_.c_str(), syslog_port_); diff --git a/src/web/WebSettingsService.h b/src/web/WebSettingsService.h index 54f740de8..8ad076ab4 100644 --- a/src/web/WebSettingsService.h +++ b/src/web/WebSettingsService.h @@ -67,9 +67,9 @@ class WebSettings { uint8_t bool_dashboard; uint8_t enum_format; - int8_t weblog_level; - uint8_t weblog_buffer; - bool weblog_compact; + int8_t weblog_level; + uint16_t weblog_buffer; + bool weblog_compact; bool fahrenheit; From ffb90b8f9a4d5fe0da860e1f3b5a3c469c086209 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 28 Jan 2026 15:01:57 +0100 Subject: [PATCH 021/162] comfortpoint temperature and offset, #2935 --- src/core/locale_translations.h | 2 ++ src/devices/thermostat.cpp | 36 ++++++++++++++++++++++++++++++++++ src/devices/thermostat.h | 5 +++++ 3 files changed, 43 insertions(+) diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index d1116e7e9..319fcda82 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -754,6 +754,8 @@ MAKE_TRANSLATION(roomTemp, "currtemp", "current room temperature", "aktuelle Rau MAKE_TRANSLATION(mode, "mode", "operating mode", "Betriebsart", "Modus", "Läge", "sposób sterowania", "modus", "mode", "mod", "modalità", "režim", "provozní režim") MAKE_TRANSLATION(modetype, "modetype", "mode type", "Modustyp", "Type modus", "Typ av läge", "aktualny tryb pracy", "modusrype", "type mode", "mod tipi", "tipo di modalita", "typ režimu", "typ režimu") MAKE_TRANSLATION(fastheatup, "fastheatup", "fast heatup", "schnelles Aufheizen", "Snel opwarmen", "Snabb Uppvärmning", "szybkie nagrzewanie", "rask oppvarming", "chauffage rapide", "hızlı ısıtma", "riscaldamento rapido", "rýchle zahriatie", "rychlé předehřátí") +MAKE_TRANSLATION(comfortPointTemp, "comftemp", "comfort point temperature", "Komfortpunkt Temperatur", "", "", "", "", "", "", "", "", "") +MAKE_TRANSLATION(comfortPointOffset, "comfoffset", "comfort point offset", "Komfortpunkt Anhebung", "", "", "", "", "", "", "", "", "") MAKE_TRANSLATION(heatup, "heatup", "heatup", "Aufheizen", "opwarmen", "Uppvärmning", "nagrzewanie", "oppvarming", "chauffage", "hızlı", "riscaldamento", "rýchle zahriatie", "předehřev") MAKE_TRANSLATION(daytemp, "daytemp", "day temperature", "Tagestemperatur", "temperatuur dag", "Dagstemperatur", "temperatura w dzień", "dagtemperatur", "température jour", "gündüz sıcaklığı", "temperatura giornaliera", "denná teplota", "denní teplota") MAKE_TRANSLATION(daylowtemp, "daytemp2", "day temperature T2", "Tagestemperatur T2", "Temperatuur dag T2", "Dagstemperatur T2", "temperatura w dzień T2", "dagtemperatur T2", "température jour T2", "gündüz sıcaklığı T2", "temperatura giornaliera T2", "denná teplota T2", "denní teplota T2") diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index bbefe086b..b88a22e6c 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1235,6 +1235,8 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { } has_update(telegram, hc->fastHeatup, 10); + has_update(telegram, hc->comfortPointOffset, 11); + has_update(telegram, hc->comfortPointTemp, 12); } // types 0x471 ff summer2_typeids @@ -3326,6 +3328,33 @@ bool Thermostat::set_fastheatup(const char * value, const int8_t id) { return true; } +// https://github.com/emsesp/EMS-ESP32/issues/2935 +bool Thermostat::set_comfortPointTemp(const char * value, const int8_t id) { + auto hc = heating_circuit(id); + if (hc == nullptr) { + return false; + } + int set; + if (!Helpers::value2temperature(value, set)) { + return false; + } + write_command(summer_typeids[hc->hc()], 12, set, summer_typeids[hc->hc()]); + return true; +} + +bool Thermostat::set_comfortPointOffset(const char * value, const int8_t id) { + auto hc = heating_circuit(id); + if (hc == nullptr) { + return false; + } + int set; + if (!Helpers::value2temperature(value, set, true)) { + return false; + } + write_command(summer_typeids[hc->hc()], 11, set, summer_typeids[hc->hc()]); + return true; +} + // Set holidaymode Junkers bool Thermostat::set_holidaymode(const char * value, const int8_t id) { auto hc = heating_circuit(id); @@ -4878,6 +4907,13 @@ void Thermostat::register_device_values_hc(std::shared_ptrcooltemp, DeviceValueType::INT8, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(cooltemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_cooltemp), -1, 30); register_device_value(tag, &hc->fastHeatup, DeviceValueType::UINT8, FL_(fastheatup), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_fastheatup)); + register_device_value(tag, + &hc->comfortPointOffset, + DeviceValueType::UINT8, + FL_(comfortPointOffset), + DeviceValueUOM::DEGREES_R, + MAKE_CF_CB(set_comfortPointOffset)); + register_device_value(tag, &hc->comfortPointTemp, DeviceValueType::UINT8, FL_(comfortPointTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_comfortPointTemp)); register_device_value(tag, &hc->switchonoptimization, DeviceValueType::BOOL, diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 2bc1e18fc..aba59e5c5 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -89,6 +89,9 @@ class Thermostat : public EMSdevice { uint8_t statusbyte; // from RC300monitor uint8_t switchProgMode; int8_t redThreshold; + // BC400 + uint8_t comfortPointTemp; + uint8_t comfortPointOffset; // RC 10 uint8_t reducehours; // night reduce duration uint16_t reduceminutes; // remaining minutes to night->day @@ -505,6 +508,8 @@ class Thermostat : public EMSdevice { bool set_controlmode(const char * value, const int8_t id); bool set_wwprio(const char * value, const int8_t id); bool set_fastheatup(const char * value, const int8_t id); + bool set_comfortPointTemp(const char * value, const int8_t id); + bool set_comfortPointOffset(const char * value, const int8_t id); bool set_switchonoptimization(const char * value, const int8_t id); bool set_heatondelay(const char * value, const int8_t id); bool set_heatoffdelay(const char * value, const int8_t id); From b3fec5ed7d803265a2ccc0664b2584a9c0e211b1 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 28 Jan 2026 15:02:28 +0100 Subject: [PATCH 022/162] fix SRC climate creation, #2936 --- src/core/emsdevice.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index 29f0cdffb..c1dcf8913 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -2159,8 +2159,8 @@ void EMSdevice::mqtt_ha_entity_config_create() { if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(selRoomTemp)[0])) { const char * icon = nullptr; for (auto & d : devicevalues_) { - if (d.tag == dv.tag && !strcmp(d.short_name, FL_(icon)[0]) && *(uint8_t *)(d.value_p != 0)) { - icon = d.options[*(uint8_t *)(d.value_p)][0]; + if (d.tag == dv.tag && !strcmp(d.short_name, FL_(icon)[0]) && *(uint8_t *)d.value_p != 0) { + icon = d.options[*(uint8_t *)d.value_p][0]; break; } } From 074f4c32edc3279f874c0a187104acf6893d4c15 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 28 Jan 2026 15:08:28 +0100 Subject: [PATCH 023/162] dev.1, changelog --- CHANGELOG_LATEST.md | 7 +++++++ src/emsesp_version.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index d08fbd934..d808c578f 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -6,6 +6,13 @@ For more details go to [emsesp.org](https://emsesp.org/). ## Added +- comfortpoint for BC400 [#2935](https://github.com/emsesp/EMS-ESP32/issues/2935) + ## Fixed +- SRC climate creation [#2936](https://github.com/emsesp/EMS-ESP32/issues/2936) + ## Changed + +- weblogbuffer up to 1000 messages with PSRAM, mentioned in [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) +- validate custom entity writes, [#2931](https://github.com/emsesp/EMS-ESP32/issues/2931) diff --git a/src/emsesp_version.h b/src/emsesp_version.h index f352db534..90d3b27d0 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.0" +#define EMSESP_APP_VERSION "3.8.2-dev.1" From 35458305521b46af901ca68bfa3bf479297903bd Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Wed, 28 Jan 2026 14:20:04 +0000 Subject: [PATCH 024/162] chore: update generated files for v3.8.2-dev.1 --- docs/Modbus-Entity-Registers.md | 722 +++++++++++++------------- docs/dump_entities.csv | 712 ++++++++++++------------- src/core/modbus_entity_parameters.hpp | 122 ++--- 3 files changed, 794 insertions(+), 762 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index 00540f20e..fd62fa6ad 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -5229,52 +5229,56 @@ int8 | hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +uint8 +| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | +uint8 +| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -5324,9 +5328,9 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | @@ -5366,20 +5370,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | | hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | | hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | @@ -5390,32 +5394,32 @@ uint8 uint8 | hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | | hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | | hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 | hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -5447,16 +5451,16 @@ int16 uint8 | hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | uint8 -| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 111 | 1 | 1/2 | +| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | uint8 -| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 112 | 1 | 1/2 | +| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | uint8 -| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | +| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | uint8 -| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | +| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | -| hc1.switchtime | program switchtime | string | | true | HC | 115 | 8 | 1 | +| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | +| hc1.switchtime | program switchtime | string | | true | HC | 117 | 8 | 1 | ### Moduline 400 @@ -5485,34 +5489,34 @@ int16 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=0) | hours | true | HC | 91 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=0) | hours | true | HC | 93 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=0) | hours | true | HC | 92 | 1 | 1 | -| hc1.vacations1 | vacation dates 1 | string | | true | HC | 123 | 11 | 1 | -| hc1.vacations2 | vacation dates 2 | string | | true | HC | 134 | 11 | 1 | -| hc1.vacations3 | vacation dates 3 | string | | true | HC | 145 | 11 | 1 | -| hc1.vacations4 | vacation dates 4 | string | | true | HC | 156 | 11 | 1 | -| hc1.vacations5 | vacation dates 5 | string | | true | HC | 167 | 11 | 1 | -| hc1.vacations6 | vacation dates 6 | string | | true | HC | 178 | 11 | 1 | -| hc1.vacations7 | vacation dates 7 | string | | true | HC | 189 | 11 | 1 | +| hc1.party | party time | uint8 (>=0<=0) | hours | true | HC | 94 | 1 | 1 | +| hc1.vacations1 | vacation dates 1 | string | | true | HC | 125 | 11 | 1 | +| hc1.vacations2 | vacation dates 2 | string | | true | HC | 136 | 11 | 1 | +| hc1.vacations3 | vacation dates 3 | string | | true | HC | 147 | 11 | 1 | +| hc1.vacations4 | vacation dates 4 | string | | true | HC | 158 | 11 | 1 | +| hc1.vacations5 | vacation dates 5 | string | | true | HC | 169 | 11 | 1 | +| hc1.vacations6 | vacation dates 6 | string | | true | HC | 180 | 11 | 1 | +| hc1.vacations7 | vacation dates 7 | string | | true | HC | 191 | 11 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | | hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | | hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.holidaytemp | holiday temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 112 | 1 | 1/2 | +| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | uint8 -| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | +| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | uint8 -| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | +| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | uint8 | hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | uint8 -| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 111 | 1 | 1/2 | +| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.whenmodeoff | when thermostat mode off | boolean | | true | DHW | 60 | 1 | 1 | | dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | @@ -5536,12 +5540,12 @@ int16 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 200 | 1 | 1 | -| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 201 | 1 | 1 | +| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 202 | 1 | 1 | +| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 203 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | @@ -5555,9 +5559,9 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | @@ -5586,12 +5590,12 @@ int16 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 200 | 1 | 1 | -| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 201 | 1 | 1 | +| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 202 | 1 | 1 | +| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 203 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | ### RC35 @@ -5617,20 +5621,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | | hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | | hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | @@ -5641,32 +5645,32 @@ uint8 uint8 | hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | | hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | | hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 | hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -5698,16 +5702,16 @@ int16 uint8 | hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | uint8 -| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 111 | 1 | 1/2 | +| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | uint8 -| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 112 | 1 | 1/2 | +| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | uint8 -| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | +| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | uint8 -| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | +| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | -| hc1.switchtime | program switchtime | string | | true | HC | 115 | 8 | 1 | +| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | +| hc1.switchtime | program switchtime | string | | true | HC | 117 | 8 | 1 | ### RFM20 Remote @@ -5737,9 +5741,9 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | @@ -5834,50 +5838,54 @@ int8 | hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +uint8 +| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | +uint8 +| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -5978,52 +5986,56 @@ int8 | hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +uint8 +| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | +uint8 +| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -6139,52 +6151,56 @@ int8 | hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +uint8 +| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | +uint8 +| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -6327,52 +6343,56 @@ int8 | hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +uint8 +| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | +uint8 +| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -6408,9 +6428,9 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | @@ -6434,9 +6454,9 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | @@ -6476,20 +6496,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | | hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | | hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | @@ -6500,32 +6520,32 @@ uint8 uint8 | hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | | hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | | hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 | hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -6565,20 +6585,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 60 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | | hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | | hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | @@ -6589,32 +6609,32 @@ uint8 uint8 | hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | | hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | | hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 | hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -6660,21 +6680,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -6717,21 +6737,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -6772,21 +6792,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -6827,21 +6847,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -6884,21 +6904,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -6941,21 +6961,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -6996,21 +7016,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -7053,21 +7073,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -7108,21 +7128,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -7163,21 +7183,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 @@ -7220,21 +7240,21 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 202 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 | hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | | hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | | hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | uint8 | hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | uint8 diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index 6711ca04c..0bf801125 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -3961,36 +3961,38 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "UI800, BC400",thermostat,4,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "UI800, BC400",thermostat,4,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "UI800, BC400",thermostat,4,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"UI800, BC400",thermostat,4,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"UI800, BC400",thermostat,4,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 -"UI800, BC400",thermostat,4,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"UI800, BC400",thermostat,4,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"UI800, BC400",thermostat,4,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"UI800, BC400",thermostat,4,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1 -"UI800, BC400",thermostat,4,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1 -"UI800, BC400",thermostat,4,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1 -"UI800, BC400",thermostat,4,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1 -"UI800, BC400",thermostat,4,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1 -"UI800, BC400",thermostat,4,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1 -"UI800, BC400",thermostat,4,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"UI800, BC400",thermostat,4,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"UI800, BC400",thermostat,4,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1 -"UI800, BC400",thermostat,4,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1 -"UI800, BC400",thermostat,4,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1 -"UI800, BC400",thermostat,4,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1 -"UI800, BC400",thermostat,4,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1 -"UI800, BC400",thermostat,4,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1 -"UI800, BC400",thermostat,4,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1 -"UI800, BC400",thermostat,4,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1 -"UI800, BC400",thermostat,4,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1 -"UI800, BC400",thermostat,4,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1 -"UI800, BC400",thermostat,4,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1 -"UI800, BC400",thermostat,4,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1 -"UI800, BC400",thermostat,4,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1 -"UI800, BC400",thermostat,4,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1 -"UI800, BC400",thermostat,4,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1 -"UI800, BC400",thermostat,4,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1 -"UI800, BC400",thermostat,4,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1 +"UI800, BC400",thermostat,4,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"UI800, BC400",thermostat,4,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"UI800, BC400",thermostat,4,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"UI800, BC400",thermostat,4,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 +"UI800, BC400",thermostat,4,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"UI800, BC400",thermostat,4,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"UI800, BC400",thermostat,4,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"UI800, BC400",thermostat,4,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 +"UI800, BC400",thermostat,4,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 +"UI800, BC400",thermostat,4,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 +"UI800, BC400",thermostat,4,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 +"UI800, BC400",thermostat,4,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 +"UI800, BC400",thermostat,4,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 +"UI800, BC400",thermostat,4,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"UI800, BC400",thermostat,4,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"UI800, BC400",thermostat,4,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 +"UI800, BC400",thermostat,4,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 +"UI800, BC400",thermostat,4,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 +"UI800, BC400",thermostat,4,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 +"UI800, BC400",thermostat,4,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 +"UI800, BC400",thermostat,4,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 +"UI800, BC400",thermostat,4,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 +"UI800, BC400",thermostat,4,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 +"UI800, BC400",thermostat,4,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 +"UI800, BC400",thermostat,4,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 +"UI800, BC400",thermostat,4,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 +"UI800, BC400",thermostat,4,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 +"UI800, BC400",thermostat,4,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 +"UI800, BC400",thermostat,4,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 +"UI800, BC400",thermostat,4,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 +"UI800, BC400",thermostat,4,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 +"UI800, BC400",thermostat,4,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 "UI800, BC400",thermostat,4,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "UI800, BC400",thermostat,4,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "UI800, BC400",thermostat,4,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4021,8 +4023,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC10",thermostat,65,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC10",thermostat,65,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC10",thermostat,65,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC10",thermostat,65,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"RC10",thermostat,65,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"RC10",thermostat,65,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"RC10",thermostat,65,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "RC10",thermostat,65,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 "RC10",thermostat,65,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "RC10",thermostat,65,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 @@ -4048,40 +4050,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC30",thermostat,67,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC30",thermostat,67,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC30",thermostat,67,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC30",thermostat,67,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"RC30",thermostat,67,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"RC30",thermostat,67,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"RC30",thermostat,67,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "RC30",thermostat,67,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "RC30",thermostat,67,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"RC30",thermostat,67,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1 +"RC30",thermostat,67,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 "RC30",thermostat,67,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "RC30",thermostat,67,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "RC30",thermostat,67,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"RC30",thermostat,67,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1 +"RC30",thermostat,67,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 "RC30",thermostat,67,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 "RC30",thermostat,67,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 "RC30",thermostat,67,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 "RC30",thermostat,67,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "RC30",thermostat,67,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC30",thermostat,67,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1 +"RC30",thermostat,67,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 "RC30",thermostat,67,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"RC30",thermostat,67,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 +"RC30",thermostat,67,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "RC30",thermostat,67,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"RC30",thermostat,67,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"RC30",thermostat,67,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13 -"RC30",thermostat,67,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13 +"RC30",thermostat,67,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"RC30",thermostat,67,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 +"RC30",thermostat,67,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 "RC30",thermostat,67,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC30",thermostat,67,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1 -"RC30",thermostat,67,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1 +"RC30",thermostat,67,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 +"RC30",thermostat,67,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 "RC30",thermostat,67,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC30",thermostat,67,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"RC30",thermostat,67,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"RC30",thermostat,67,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1 -"RC30",thermostat,67,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1 -"RC30",thermostat,67,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"RC30",thermostat,67,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"RC30",thermostat,67,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"RC30",thermostat,67,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8 -"RC30",thermostat,67,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8 +"RC30",thermostat,67,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"RC30",thermostat,67,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"RC30",thermostat,67,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 +"RC30",thermostat,67,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 +"RC30",thermostat,67,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"RC30",thermostat,67,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"RC30",thermostat,67,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"RC30",thermostat,67,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 +"RC30",thermostat,67,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 "RC30",thermostat,67,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC30",thermostat,67,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "RC30",thermostat,67,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4103,12 +4105,12 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC20, Moduline 300",thermostat,77,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC20, Moduline 300",thermostat,77,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC20, Moduline 300",thermostat,77,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1 -"RC20, Moduline 300",thermostat,77,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1 -"RC20, Moduline 300",thermostat,77,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1 -"RC20, Moduline 300",thermostat,77,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1 -"RC20, Moduline 300",thermostat,77,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1 -"RC20, Moduline 300",thermostat,77,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 -"RC20, Moduline 300",thermostat,77,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,115,8 +"RC20, Moduline 300",thermostat,77,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,113,1 +"RC20, Moduline 300",thermostat,77,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,114,1 +"RC20, Moduline 300",thermostat,77,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,115,1 +"RC20, Moduline 300",thermostat,77,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,116,1 +"RC20, Moduline 300",thermostat,77,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"RC20, Moduline 300",thermostat,77,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,117,8 "Moduline 400",thermostat,78,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Moduline 400",thermostat,78,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "Moduline 400",thermostat,78,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4126,26 +4128,26 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Moduline 400",thermostat,78,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "Moduline 400",thermostat,78,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "Moduline 400",thermostat,78,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"Moduline 400",thermostat,78,hc1.pause,pause time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1 -"Moduline 400",thermostat,78,hc1.party,party time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1 -"Moduline 400",thermostat,78,hc1.vacations1,vacation dates 1,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_1,sensor.thermostat_hc1_vacations1,6,1,1,123,11 -"Moduline 400",thermostat,78,hc1.vacations2,vacation dates 2,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_2,sensor.thermostat_hc1_vacations2,6,1,1,134,11 -"Moduline 400",thermostat,78,hc1.vacations3,vacation dates 3,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_3,sensor.thermostat_hc1_vacations3,6,1,1,145,11 -"Moduline 400",thermostat,78,hc1.vacations4,vacation dates 4,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_4,sensor.thermostat_hc1_vacations4,6,1,1,156,11 -"Moduline 400",thermostat,78,hc1.vacations5,vacation dates 5,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_5,sensor.thermostat_hc1_vacations5,6,1,1,167,11 -"Moduline 400",thermostat,78,hc1.vacations6,vacation dates 6,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_6,sensor.thermostat_hc1_vacations6,6,1,1,178,11 -"Moduline 400",thermostat,78,hc1.vacations7,vacation dates 7,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_7,sensor.thermostat_hc1_vacations7,6,1,1,189,11 +"Moduline 400",thermostat,78,hc1.pause,pause time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 +"Moduline 400",thermostat,78,hc1.party,party time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 +"Moduline 400",thermostat,78,hc1.vacations1,vacation dates 1,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_1,sensor.thermostat_hc1_vacations1,6,1,1,125,11 +"Moduline 400",thermostat,78,hc1.vacations2,vacation dates 2,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_2,sensor.thermostat_hc1_vacations2,6,1,1,136,11 +"Moduline 400",thermostat,78,hc1.vacations3,vacation dates 3,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_3,sensor.thermostat_hc1_vacations3,6,1,1,147,11 +"Moduline 400",thermostat,78,hc1.vacations4,vacation dates 4,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_4,sensor.thermostat_hc1_vacations4,6,1,1,158,11 +"Moduline 400",thermostat,78,hc1.vacations5,vacation dates 5,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_5,sensor.thermostat_hc1_vacations5,6,1,1,169,11 +"Moduline 400",thermostat,78,hc1.vacations6,vacation dates 6,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_6,sensor.thermostat_hc1_vacations6,6,1,1,180,11 +"Moduline 400",thermostat,78,hc1.vacations7,vacation dates 7,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_7,sensor.thermostat_hc1_vacations7,6,1,1,191,11 "Moduline 400",thermostat,78,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"Moduline 400",thermostat,78,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8 +"Moduline 400",thermostat,78,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 "Moduline 400",thermostat,78,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 "Moduline 400",thermostat,78,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"Moduline 400",thermostat,78,hc1.holidaytemp,holiday temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1 -"Moduline 400",thermostat,78,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 -"Moduline 400",thermostat,78,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1 -"Moduline 400",thermostat,78,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1 -"Moduline 400",thermostat,78,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1 +"Moduline 400",thermostat,78,hc1.holidaytemp,holiday temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 +"Moduline 400",thermostat,78,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"Moduline 400",thermostat,78,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,114,1 +"Moduline 400",thermostat,78,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,115,1 +"Moduline 400",thermostat,78,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,116,1 "Moduline 400",thermostat,78,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1 -"Moduline 400",thermostat,78,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1 +"Moduline 400",thermostat,78,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,113,1 "Moduline 400",thermostat,78,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Moduline 400",thermostat,78,dhw.whenmodeoff,when thermostat mode off,boolean (>=0<=0), ,true,switch.thermostat_dhw_when_thermostat_mode_off,switch.thermostat_dhw_whenmodeoff,6,9,1,60,1 "Moduline 400",thermostat,78,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1 @@ -4160,10 +4162,10 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC10, Moduline 100",thermostat,79,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "RC10, Moduline 100",thermostat,79,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC10, Moduline 100",thermostat,79,hc1.mode,operating mode,enum [nofrost\|night\|day] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"RC10, Moduline 100",thermostat,79,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"RC10, Moduline 100",thermostat,79,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 -"RC10, Moduline 100",thermostat,79,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,200,1 -"RC10, Moduline 100",thermostat,79,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,201,1 +"RC10, Moduline 100",thermostat,79,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"RC10, Moduline 100",thermostat,79,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"RC10, Moduline 100",thermostat,79,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,202,1 +"RC10, Moduline 100",thermostat,79,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,203,1 "RC10, Moduline 100",thermostat,79,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Moduline 200",thermostat,80,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Moduline 200",thermostat,80,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 @@ -4174,10 +4176,10 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Moduline 200",thermostat,80,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "Moduline 200",thermostat,80,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "Moduline 200",thermostat,80,hc1.mode,operating mode,enum [nofrost\|night\|day] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"Moduline 200",thermostat,80,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"Moduline 200",thermostat,80,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 -"Moduline 200",thermostat,80,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,200,1 -"Moduline 200",thermostat,80,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,201,1 +"Moduline 200",thermostat,80,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"Moduline 200",thermostat,80,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"Moduline 200",thermostat,80,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,202,1 +"Moduline 200",thermostat,80,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,203,1 "Moduline 200",thermostat,80,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC35",thermostat,86,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RC35",thermostat,86,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 @@ -4194,40 +4196,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC35",thermostat,86,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC35",thermostat,86,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC35",thermostat,86,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC35",thermostat,86,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"RC35",thermostat,86,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"RC35",thermostat,86,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"RC35",thermostat,86,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "RC35",thermostat,86,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "RC35",thermostat,86,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"RC35",thermostat,86,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1 +"RC35",thermostat,86,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 "RC35",thermostat,86,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "RC35",thermostat,86,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "RC35",thermostat,86,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"RC35",thermostat,86,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1 +"RC35",thermostat,86,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 "RC35",thermostat,86,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 "RC35",thermostat,86,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 "RC35",thermostat,86,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 "RC35",thermostat,86,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "RC35",thermostat,86,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC35",thermostat,86,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1 +"RC35",thermostat,86,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 "RC35",thermostat,86,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"RC35",thermostat,86,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 +"RC35",thermostat,86,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "RC35",thermostat,86,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"RC35",thermostat,86,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"RC35",thermostat,86,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13 -"RC35",thermostat,86,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13 +"RC35",thermostat,86,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"RC35",thermostat,86,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 +"RC35",thermostat,86,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 "RC35",thermostat,86,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC35",thermostat,86,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1 -"RC35",thermostat,86,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1 +"RC35",thermostat,86,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 +"RC35",thermostat,86,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 "RC35",thermostat,86,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC35",thermostat,86,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"RC35",thermostat,86,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"RC35",thermostat,86,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1 -"RC35",thermostat,86,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1 -"RC35",thermostat,86,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"RC35",thermostat,86,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"RC35",thermostat,86,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"RC35",thermostat,86,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8 -"RC35",thermostat,86,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8 +"RC35",thermostat,86,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"RC35",thermostat,86,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"RC35",thermostat,86,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 +"RC35",thermostat,86,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 +"RC35",thermostat,86,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"RC35",thermostat,86,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"RC35",thermostat,86,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"RC35",thermostat,86,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 +"RC35",thermostat,86,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 "RC35",thermostat,86,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC35",thermostat,86,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "RC35",thermostat,86,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4250,8 +4252,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC10, Moduline 100",thermostat,90,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC10, Moduline 100",thermostat,90,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC10, Moduline 100",thermostat,90,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC10, Moduline 100",thermostat,90,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"RC10, Moduline 100",thermostat,90,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"RC10, Moduline 100",thermostat,90,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"RC10, Moduline 100",thermostat,90,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "RC10, Moduline 100",thermostat,90,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 "RC10, Moduline 100",thermostat,90,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "RC10, Moduline 100",thermostat,90,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 @@ -4267,12 +4269,12 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC20RF",thermostat,93,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC20RF",thermostat,93,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC20RF",thermostat,93,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1 -"RC20RF",thermostat,93,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1 -"RC20RF",thermostat,93,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1 -"RC20RF",thermostat,93,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1 -"RC20RF",thermostat,93,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1 -"RC20RF",thermostat,93,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 -"RC20RF",thermostat,93,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,115,8 +"RC20RF",thermostat,93,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,113,1 +"RC20RF",thermostat,93,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,114,1 +"RC20RF",thermostat,93,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,115,1 +"RC20RF",thermostat,93,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,116,1 +"RC20RF",thermostat,93,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"RC20RF",thermostat,93,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,117,8 "RFM20 Remote",thermostat,94,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RFM20 Remote",thermostat,94,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "RFM20 Remote",thermostat,94,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4288,8 +4290,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC25",thermostat,151,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC25",thermostat,151,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC25",thermostat,151,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC25",thermostat,151,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"RC25",thermostat,151,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"RC25",thermostat,151,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"RC25",thermostat,151,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "RC25",thermostat,151,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 "RC25",thermostat,151,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "RC25",thermostat,151,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 @@ -4350,34 +4352,36 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC200, CW100, CR120, CR50",thermostat,157,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 "RC200, CW100, CR120, CR50",thermostat,157,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC200, CW100, CR120, CR50",thermostat,157,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "RC200, CW100, CR120, CR50",thermostat,157,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4443,36 +4447,38 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.mode,operating mode,enum [off\|normal\|comfort\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4547,36 +4553,38 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Rego 2000/3000",thermostat,172,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "Rego 2000/3000",thermostat,172,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "Rego 2000/3000",thermostat,172,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"Rego 2000/3000",thermostat,172,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"Rego 2000/3000",thermostat,172,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 -"Rego 2000/3000",thermostat,172,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"Rego 2000/3000",thermostat,172,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"Rego 2000/3000",thermostat,172,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"Rego 2000/3000",thermostat,172,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1 -"Rego 2000/3000",thermostat,172,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1 -"Rego 2000/3000",thermostat,172,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1 -"Rego 2000/3000",thermostat,172,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1 -"Rego 2000/3000",thermostat,172,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1 -"Rego 2000/3000",thermostat,172,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1 -"Rego 2000/3000",thermostat,172,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"Rego 2000/3000",thermostat,172,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"Rego 2000/3000",thermostat,172,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1 -"Rego 2000/3000",thermostat,172,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1 -"Rego 2000/3000",thermostat,172,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1 -"Rego 2000/3000",thermostat,172,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1 -"Rego 2000/3000",thermostat,172,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1 -"Rego 2000/3000",thermostat,172,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1 -"Rego 2000/3000",thermostat,172,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1 -"Rego 2000/3000",thermostat,172,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1 -"Rego 2000/3000",thermostat,172,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1 -"Rego 2000/3000",thermostat,172,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1 -"Rego 2000/3000",thermostat,172,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1 -"Rego 2000/3000",thermostat,172,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1 -"Rego 2000/3000",thermostat,172,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1 -"Rego 2000/3000",thermostat,172,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1 -"Rego 2000/3000",thermostat,172,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1 -"Rego 2000/3000",thermostat,172,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1 -"Rego 2000/3000",thermostat,172,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1 +"Rego 2000/3000",thermostat,172,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"Rego 2000/3000",thermostat,172,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"Rego 2000/3000",thermostat,172,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"Rego 2000/3000",thermostat,172,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 +"Rego 2000/3000",thermostat,172,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"Rego 2000/3000",thermostat,172,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"Rego 2000/3000",thermostat,172,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"Rego 2000/3000",thermostat,172,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 +"Rego 2000/3000",thermostat,172,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 +"Rego 2000/3000",thermostat,172,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 +"Rego 2000/3000",thermostat,172,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 +"Rego 2000/3000",thermostat,172,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 +"Rego 2000/3000",thermostat,172,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 +"Rego 2000/3000",thermostat,172,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"Rego 2000/3000",thermostat,172,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"Rego 2000/3000",thermostat,172,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 +"Rego 2000/3000",thermostat,172,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 +"Rego 2000/3000",thermostat,172,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 +"Rego 2000/3000",thermostat,172,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 +"Rego 2000/3000",thermostat,172,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 +"Rego 2000/3000",thermostat,172,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 +"Rego 2000/3000",thermostat,172,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 +"Rego 2000/3000",thermostat,172,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 +"Rego 2000/3000",thermostat,172,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 +"Rego 2000/3000",thermostat,172,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 +"Rego 2000/3000",thermostat,172,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 +"Rego 2000/3000",thermostat,172,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 +"Rego 2000/3000",thermostat,172,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 +"Rego 2000/3000",thermostat,172,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 +"Rego 2000/3000",thermostat,172,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 +"Rego 2000/3000",thermostat,172,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 +"Rego 2000/3000",thermostat,172,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 "Rego 2000/3000",thermostat,172,dhw.mode,operating mode,enum [normal\|comfort\|eco+] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Rego 2000/3000",thermostat,172,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "Rego 2000/3000",thermostat,172,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4669,36 +4677,38 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4721,8 +4731,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES72, RC20",thermostat,66,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES72, RC20",thermostat,66,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES72, RC20",thermostat,66,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES72, RC20",thermostat,66,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"ES72, RC20",thermostat,66,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"ES72, RC20",thermostat,66,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"ES72, RC20",thermostat,66,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "ES72, RC20",thermostat,66,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 "ES72, RC20",thermostat,66,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "ES72, RC20",thermostat,66,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 @@ -4748,40 +4758,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES73",thermostat,76,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES73",thermostat,76,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES73",thermostat,76,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES73",thermostat,76,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"ES73",thermostat,76,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"ES73",thermostat,76,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"ES73",thermostat,76,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "ES73",thermostat,76,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "ES73",thermostat,76,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"ES73",thermostat,76,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1 +"ES73",thermostat,76,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 "ES73",thermostat,76,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "ES73",thermostat,76,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "ES73",thermostat,76,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"ES73",thermostat,76,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1 +"ES73",thermostat,76,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 "ES73",thermostat,76,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 "ES73",thermostat,76,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 "ES73",thermostat,76,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 "ES73",thermostat,76,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "ES73",thermostat,76,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"ES73",thermostat,76,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1 +"ES73",thermostat,76,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 "ES73",thermostat,76,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"ES73",thermostat,76,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 +"ES73",thermostat,76,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "ES73",thermostat,76,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"ES73",thermostat,76,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"ES73",thermostat,76,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13 -"ES73",thermostat,76,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13 +"ES73",thermostat,76,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"ES73",thermostat,76,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 +"ES73",thermostat,76,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 "ES73",thermostat,76,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"ES73",thermostat,76,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1 -"ES73",thermostat,76,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1 +"ES73",thermostat,76,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 +"ES73",thermostat,76,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 "ES73",thermostat,76,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"ES73",thermostat,76,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"ES73",thermostat,76,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"ES73",thermostat,76,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1 -"ES73",thermostat,76,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1 -"ES73",thermostat,76,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"ES73",thermostat,76,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"ES73",thermostat,76,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"ES73",thermostat,76,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8 -"ES73",thermostat,76,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8 +"ES73",thermostat,76,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"ES73",thermostat,76,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"ES73",thermostat,76,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 +"ES73",thermostat,76,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 +"ES73",thermostat,76,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"ES73",thermostat,76,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"ES73",thermostat,76,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"ES73",thermostat,76,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 +"ES73",thermostat,76,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 "ES73",thermostat,76,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "ES73",thermostat,76,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "ES73",thermostat,76,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4804,8 +4814,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES72, RC20",thermostat,113,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES72, RC20",thermostat,113,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES72, RC20",thermostat,113,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES72, RC20",thermostat,113,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"ES72, RC20",thermostat,113,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"ES72, RC20",thermostat,113,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"ES72, RC20",thermostat,113,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "ES72, RC20",thermostat,113,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 "ES72, RC20",thermostat,113,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "ES72, RC20",thermostat,113,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 @@ -4828,40 +4838,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES79",thermostat,156,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES79",thermostat,156,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES79",thermostat,156,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES79",thermostat,156,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1 -"ES79",thermostat,156,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1 +"ES79",thermostat,156,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 +"ES79",thermostat,156,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 "ES79",thermostat,156,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "ES79",thermostat,156,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"ES79",thermostat,156,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1 +"ES79",thermostat,156,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 "ES79",thermostat,156,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "ES79",thermostat,156,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "ES79",thermostat,156,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"ES79",thermostat,156,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1 +"ES79",thermostat,156,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 "ES79",thermostat,156,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 "ES79",thermostat,156,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 "ES79",thermostat,156,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 "ES79",thermostat,156,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "ES79",thermostat,156,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"ES79",thermostat,156,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1 +"ES79",thermostat,156,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 "ES79",thermostat,156,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"ES79",thermostat,156,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1 +"ES79",thermostat,156,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "ES79",thermostat,156,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"ES79",thermostat,156,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 -"ES79",thermostat,156,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13 -"ES79",thermostat,156,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13 +"ES79",thermostat,156,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 +"ES79",thermostat,156,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 +"ES79",thermostat,156,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 "ES79",thermostat,156,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"ES79",thermostat,156,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1 -"ES79",thermostat,156,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1 +"ES79",thermostat,156,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 +"ES79",thermostat,156,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 "ES79",thermostat,156,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"ES79",thermostat,156,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1 -"ES79",thermostat,156,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1 -"ES79",thermostat,156,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1 -"ES79",thermostat,156,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1 -"ES79",thermostat,156,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 -"ES79",thermostat,156,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1 -"ES79",thermostat,156,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"ES79",thermostat,156,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8 -"ES79",thermostat,156,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8 +"ES79",thermostat,156,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 +"ES79",thermostat,156,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 +"ES79",thermostat,156,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 +"ES79",thermostat,156,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 +"ES79",thermostat,156,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 +"ES79",thermostat,156,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 +"ES79",thermostat,156,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"ES79",thermostat,156,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 +"ES79",thermostat,156,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 "ES79",thermostat,156,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "ES79",thermostat,156,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "ES79",thermostat,156,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4892,18 +4902,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW100",thermostat,105,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW100",thermostat,105,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW100",thermostat,105,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW100",thermostat,105,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FW100",thermostat,105,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FW100",thermostat,105,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FW100",thermostat,105,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW100",thermostat,105,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FW100",thermostat,105,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FW100",thermostat,105,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW100",thermostat,105,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FW100",thermostat,105,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FW100",thermostat,105,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FW100",thermostat,105,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW100",thermostat,105,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FW100",thermostat,105,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FW100",thermostat,105,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FW100",thermostat,105,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FW100",thermostat,105,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FW100",thermostat,105,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FW100",thermostat,105,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FW100",thermostat,105,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FW100",thermostat,105,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FW100",thermostat,105,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FW100",thermostat,105,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -4929,18 +4939,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW200",thermostat,106,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW200",thermostat,106,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW200",thermostat,106,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW200",thermostat,106,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FW200",thermostat,106,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FW200",thermostat,106,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FW200",thermostat,106,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW200",thermostat,106,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FW200",thermostat,106,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FW200",thermostat,106,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW200",thermostat,106,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FW200",thermostat,106,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FW200",thermostat,106,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FW200",thermostat,106,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW200",thermostat,106,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FW200",thermostat,106,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FW200",thermostat,106,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FW200",thermostat,106,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FW200",thermostat,106,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FW200",thermostat,106,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FW200",thermostat,106,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FW200",thermostat,106,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FW200",thermostat,106,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FW200",thermostat,106,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FW200",thermostat,106,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -4964,18 +4974,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR100",thermostat,107,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR100",thermostat,107,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR100",thermostat,107,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR100",thermostat,107,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FR100",thermostat,107,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FR100",thermostat,107,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FR100",thermostat,107,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR100",thermostat,107,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FR100",thermostat,107,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FR100",thermostat,107,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR100",thermostat,107,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FR100",thermostat,107,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FR100",thermostat,107,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FR100",thermostat,107,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR100",thermostat,107,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FR100",thermostat,107,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FR100",thermostat,107,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FR100",thermostat,107,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FR100",thermostat,107,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FR100",thermostat,107,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FR100",thermostat,107,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FR100",thermostat,107,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FR100",thermostat,107,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FR100",thermostat,107,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FR100",thermostat,107,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -4999,18 +5009,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR110",thermostat,108,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR110",thermostat,108,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR110",thermostat,108,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR110",thermostat,108,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FR110",thermostat,108,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FR110",thermostat,108,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FR110",thermostat,108,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR110",thermostat,108,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FR110",thermostat,108,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FR110",thermostat,108,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR110",thermostat,108,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FR110",thermostat,108,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FR110",thermostat,108,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FR110",thermostat,108,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR110",thermostat,108,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FR110",thermostat,108,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FR110",thermostat,108,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FR110",thermostat,108,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FR110",thermostat,108,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FR110",thermostat,108,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FR110",thermostat,108,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FR110",thermostat,108,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FR110",thermostat,108,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FR110",thermostat,108,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FR110",thermostat,108,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -5036,18 +5046,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FB10",thermostat,109,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FB10",thermostat,109,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FB10",thermostat,109,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FB10",thermostat,109,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FB10",thermostat,109,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FB10",thermostat,109,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FB10",thermostat,109,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FB10",thermostat,109,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FB10",thermostat,109,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FB10",thermostat,109,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FB10",thermostat,109,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FB10",thermostat,109,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FB10",thermostat,109,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FB10",thermostat,109,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FB10",thermostat,109,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FB10",thermostat,109,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FB10",thermostat,109,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FB10",thermostat,109,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FB10",thermostat,109,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FB10",thermostat,109,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FB10",thermostat,109,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FB10",thermostat,109,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FB10",thermostat,109,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FB10",thermostat,109,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FB10",thermostat,109,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -5073,18 +5083,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FB100",thermostat,110,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FB100",thermostat,110,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FB100",thermostat,110,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FB100",thermostat,110,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FB100",thermostat,110,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FB100",thermostat,110,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FB100",thermostat,110,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FB100",thermostat,110,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FB100",thermostat,110,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FB100",thermostat,110,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FB100",thermostat,110,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FB100",thermostat,110,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FB100",thermostat,110,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FB100",thermostat,110,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FB100",thermostat,110,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FB100",thermostat,110,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FB100",thermostat,110,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FB100",thermostat,110,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FB100",thermostat,110,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FB100",thermostat,110,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FB100",thermostat,110,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FB100",thermostat,110,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FB100",thermostat,110,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FB100",thermostat,110,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FB100",thermostat,110,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -5108,18 +5118,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR10",thermostat,111,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR10",thermostat,111,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR10",thermostat,111,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR10",thermostat,111,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FR10",thermostat,111,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FR10",thermostat,111,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FR10",thermostat,111,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR10",thermostat,111,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FR10",thermostat,111,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FR10",thermostat,111,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR10",thermostat,111,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FR10",thermostat,111,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FR10",thermostat,111,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FR10",thermostat,111,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR10",thermostat,111,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FR10",thermostat,111,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FR10",thermostat,111,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FR10",thermostat,111,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FR10",thermostat,111,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FR10",thermostat,111,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FR10",thermostat,111,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FR10",thermostat,111,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FR10",thermostat,111,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FR10",thermostat,111,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FR10",thermostat,111,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -5145,18 +5155,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW500",thermostat,116,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW500",thermostat,116,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW500",thermostat,116,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW500",thermostat,116,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FW500",thermostat,116,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FW500",thermostat,116,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FW500",thermostat,116,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW500",thermostat,116,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FW500",thermostat,116,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FW500",thermostat,116,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW500",thermostat,116,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FW500",thermostat,116,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FW500",thermostat,116,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FW500",thermostat,116,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW500",thermostat,116,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FW500",thermostat,116,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FW500",thermostat,116,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FW500",thermostat,116,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FW500",thermostat,116,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FW500",thermostat,116,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FW500",thermostat,116,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FW500",thermostat,116,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FW500",thermostat,116,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FW500",thermostat,116,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FW500",thermostat,116,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -5180,18 +5190,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR50",thermostat,147,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR50",thermostat,147,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR50",thermostat,147,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR50",thermostat,147,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FR50",thermostat,147,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FR50",thermostat,147,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FR50",thermostat,147,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR50",thermostat,147,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FR50",thermostat,147,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FR50",thermostat,147,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR50",thermostat,147,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FR50",thermostat,147,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FR50",thermostat,147,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FR50",thermostat,147,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR50",thermostat,147,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FR50",thermostat,147,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FR50",thermostat,147,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FR50",thermostat,147,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FR50",thermostat,147,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FR50",thermostat,147,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FR50",thermostat,147,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FR50",thermostat,147,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FR50",thermostat,147,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FR50",thermostat,147,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FR50",thermostat,147,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -5215,18 +5225,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR120",thermostat,191,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR120",thermostat,191,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR120",thermostat,191,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR120",thermostat,191,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FR120",thermostat,191,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FR120",thermostat,191,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FR120",thermostat,191,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR120",thermostat,191,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FR120",thermostat,191,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FR120",thermostat,191,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR120",thermostat,191,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FR120",thermostat,191,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FR120",thermostat,191,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FR120",thermostat,191,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR120",thermostat,191,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FR120",thermostat,191,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FR120",thermostat,191,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FR120",thermostat,191,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FR120",thermostat,191,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FR120",thermostat,191,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FR120",thermostat,191,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FR120",thermostat,191,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FR120",thermostat,191,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FR120",thermostat,191,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FR120",thermostat,191,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 @@ -5252,18 +5262,18 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW120",thermostat,192,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW120",thermostat,192,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW120",thermostat,192,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW120",thermostat,192,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1 +"FW120",thermostat,192,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 "FW120",thermostat,192,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 "FW120",thermostat,192,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW120",thermostat,192,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1 +"FW120",thermostat,192,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 "FW120",thermostat,192,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW120",thermostat,192,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1 +"FW120",thermostat,192,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 "FW120",thermostat,192,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 "FW120",thermostat,192,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW120",thermostat,192,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1 -"FW120",thermostat,192,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1 -"FW120",thermostat,192,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1 -"FW120",thermostat,192,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1 +"FW120",thermostat,192,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 +"FW120",thermostat,192,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 +"FW120",thermostat,192,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 +"FW120",thermostat,192,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 "FW120",thermostat,192,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 "FW120",thermostat,192,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 "FW120",thermostat,192,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index fc7500569..2d29ea60d 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -327,66 +327,68 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(tempautotemp), 27, 1), // tempautotemp REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(cooltemp), 28, 1), // cooltemp REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(fastheatup), 29, 1), // fastheatup - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchonoptimization), 30, 1), // switchonoptimization - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducemode), 31, 1), // reducemode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(noreducetemp), 32, 1), // noreducetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducetemp), 33, 1), // reducetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(wwprio), 34, 1), // dhwprio - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpcooling), 35, 1), // hpcooling - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolingOn), 36, 1), // coolingon - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpmode), 37, 1), // hpmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dewoffset), 38, 1), // dewoffset - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomtempdiff), 39, 1), // roomtempdiff - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpminflowtemp), 40, 1), // hpminflowtemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(control), 41, 1), // control - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotetemp), 42, 1), // remotetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotehum), 43, 1), // remotehum - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatondelay), 44, 1), // heatondelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatoffdelay), 45, 1), // heatoffdelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(instantstart), 46, 1), // instantstart - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boost), 47, 1), // boost - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boosttime), 48, 1), // boosttime - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolstart), 49, 1), // coolstart - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolondelay), 50, 1), // coolondelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(cooloffdelay), 51, 1), // cooloffdelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchProgMode), 52, 1), // switchprogmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(redthreshold), 53, 1), // redthreshold - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(solarinfl), 54, 1), // solarinfl - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(currsolarinfl), 55, 1), // currsolarinfl - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatingPID), 56, 1), // heatingpid - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pumpopt), 57, 1), // pumpopt - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttimefloor), 58, 1), // inttimefloor - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttime), 59, 1), // inttime - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daytemp), 60, 1), // daytemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nighttemp2), 61, 1), // nighttemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaytemp), 62, 1), // holidaytemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaymode), 63, 1), // holidaymode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(flowtempoffset), 64, 1), // flowtempoffset - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidays), 65, 13), // holidays - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations), 78, 13), // vacations - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pause), 91, 1), // pause - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(party), 92, 1), // party - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducetemp), 93, 1), // vacreducetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducemode), 94, 1), // vacreducemode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime1), 95, 8), // switchtime1 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime2), 103, 8), // switchtime2 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(offtemp), 111, 1), // offtemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daylowtemp), 112, 1), // daytemp2 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daymidtemp), 113, 1), // daytemp3 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dayhightemp), 114, 1), // daytemp4 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime), 115, 8), // switchtime - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations1), 123, 11), // vacations1 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations2), 134, 11), // vacations2 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations3), 145, 11), // vacations3 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations4), 156, 11), // vacations4 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations5), 167, 11), // vacations5 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations6), 178, 11), // vacations6 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations7), 189, 11), // vacations7 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducehours), 200, 1), // reducehours - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reduceminutes), 201, 1), // reduceminutes - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heattemp), 202, 1), // heattemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomsensor), 203, 1), // roomsensor - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatup), 204, 1), // heatup + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(comfortPointOffset), 30, 1), // comfoffset + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(comfortPointTemp), 31, 1), // comftemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchonoptimization), 32, 1), // switchonoptimization + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducemode), 33, 1), // reducemode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(noreducetemp), 34, 1), // noreducetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducetemp), 35, 1), // reducetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(wwprio), 36, 1), // dhwprio + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpcooling), 37, 1), // hpcooling + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolingOn), 38, 1), // coolingon + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpmode), 39, 1), // hpmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dewoffset), 40, 1), // dewoffset + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomtempdiff), 41, 1), // roomtempdiff + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpminflowtemp), 42, 1), // hpminflowtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(control), 43, 1), // control + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotetemp), 44, 1), // remotetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotehum), 45, 1), // remotehum + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatondelay), 46, 1), // heatondelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatoffdelay), 47, 1), // heatoffdelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(instantstart), 48, 1), // instantstart + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boost), 49, 1), // boost + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boosttime), 50, 1), // boosttime + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolstart), 51, 1), // coolstart + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolondelay), 52, 1), // coolondelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(cooloffdelay), 53, 1), // cooloffdelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchProgMode), 54, 1), // switchprogmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(redthreshold), 55, 1), // redthreshold + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(solarinfl), 56, 1), // solarinfl + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(currsolarinfl), 57, 1), // currsolarinfl + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatingPID), 58, 1), // heatingpid + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pumpopt), 59, 1), // pumpopt + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttimefloor), 60, 1), // inttimefloor + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttime), 61, 1), // inttime + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daytemp), 62, 1), // daytemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nighttemp2), 63, 1), // nighttemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaytemp), 64, 1), // holidaytemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaymode), 65, 1), // holidaymode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(flowtempoffset), 66, 1), // flowtempoffset + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidays), 67, 13), // holidays + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations), 80, 13), // vacations + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pause), 93, 1), // pause + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(party), 94, 1), // party + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducetemp), 95, 1), // vacreducetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducemode), 96, 1), // vacreducemode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime1), 97, 8), // switchtime1 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime2), 105, 8), // switchtime2 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(offtemp), 113, 1), // offtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daylowtemp), 114, 1), // daytemp2 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daymidtemp), 115, 1), // daytemp3 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dayhightemp), 116, 1), // daytemp4 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime), 117, 8), // switchtime + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations1), 125, 11), // vacations1 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations2), 136, 11), // vacations2 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations3), 147, 11), // vacations3 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations4), 158, 11), // vacations4 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations5), 169, 11), // vacations5 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations6), 180, 11), // vacations6 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations7), 191, 11), // vacations7 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducehours), 202, 1), // reducehours + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reduceminutes), 203, 1), // reduceminutes + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heattemp), 204, 1), // heattemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomsensor), 205, 1), // roomsensor + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatup), 206, 1), // heatup REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(mode), 0, 1), // mode REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(modetype), 1, 1), // modetype REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(wwSetTemp), 2, 1), // settemp From 4e194287c97dd0cb98ebe8eeb6be348e96712d68 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 28 Jan 2026 18:07:47 +0100 Subject: [PATCH 025/162] remove SRC climate for test --- src/core/emsdevice.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index c1dcf8913..bac194cfa 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -2156,6 +2156,7 @@ void EMSdevice::mqtt_ha_entity_config_create() { } // SRC thermostats mapped to connect/src1/... + /* removed climate for testing if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(selRoomTemp)[0])) { const char * icon = nullptr; for (auto & d : devicevalues_) { @@ -2168,6 +2169,7 @@ void EMSdevice::mqtt_ha_entity_config_create() { // https://github.com/emsesp/EMS-ESP32/issues/2636 Mqtt::publish_ha_climate_config(dv, true, nullptr, false, icon); } + */ #ifndef EMSESP_STANDALONE // always create minimum one config From 95f7e66cff35c9354b9c8baf583db3721fa4a14c Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 28 Jan 2026 21:46:58 +0100 Subject: [PATCH 026/162] update discord URL and tidy up --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5a8e7ad51..a4d80ad0f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Guides - + Discord @@ -32,7 +32,7 @@ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=emsesp_EMS-ESP32&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=emsesp_EMS-ESP32) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/9441142f49424ef891e8f5251866ee6b)](https://app.codacy.com/gh/emsesp/EMS-ESP32/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![downloads](https://img.shields.io/github/downloads/emsesp/EMS-ESP32/total.svg)](https://github.com/emsesp/EMS-ESP32/releases) -[![chat](https://img.shields.io/discord/816637840644505620.svg?style=flat-square&color=blueviolet)](https://discord.gg/3J3GgnzpyT) +[![chat](https://img.shields.io/discord/816637840644505620.svg?style=flat-square&color=blueviolet)](https://discord.gg/GP9DPSgeJq) [![GitHub stars](https://img.shields.io/github/stars/emsesp/EMS-ESP32.svg?style=social&label=Star)](https://github.com/emsesp/EMS-ESP32/stargazers) [![GitHub forks](https://img.shields.io/github/forks/emsesp/EMS-ESP32.svg?style=social&label=Fork)](https://github.com/emsesp/EMS-ESP32/network) @@ -40,7 +40,8 @@ **EMS-ESP** is an open-source firmware for the Espressif ESP32 microcontroller to communicate with **EMS** (Energy Management System) compatible equipment from manufacturers such as Bosch, Buderus, Nefit, Junkers, Worcester, Sieger, elm.leblanc and iVT. -It requires a small circuit to interface with the EMS bus which can be purchased from or custom built. +It requires a small circuit to interface with the EMS bus which can be purchased from . These gateways are tested thoroughly and certified to work with EMS-ESP. + ## 📦  **Key Features** @@ -64,17 +65,17 @@ Head over to the [Installation Guide](https://emsesp.org/Installing) section of ## 📋  **Documentation** -Visit [emsesp.org](https://emsesp.org) for more details on how to install and configure EMS-ESP. There is also a collection of Frequently Asked Questions and Troubleshooting tips with example customizations from the community. +Visit [emsesp.org](https://emsesp.org) for more details on how to setup and configure EMS-ESP. You'll also find more a collection of example configuarations, Frequently Asked Questions and Troubleshooting tips. ## 💬  **Getting Support** -To chat with the community reach out on our [Discord Server](https://discord.gg/3J3GgnzpyT). +To chat with the community reach out on our [Discord Server](https://discord.gg/GP9DPSgeJq). -If you find an issue or have a request, see [how to request support](https://emsesp.org/Support/) on how to submit a bug report or feature request. +If you find an issue or have a request, see the [Getting Support](https://emsesp.org/Support/) section of the documentation. Note if you are using a non-BBQKees EMS gateway, you may need to contact the manufacturer for support. ## 🎥  **Live Demo** -For a live demo go to [demo.emsesp.org](https://demo.emsesp.org). Pick a language from the sign on page and log in with any username or password. Note not all features are operational as it's based on static data. +To see a live demo go to [demo.emsesp.org](https://demo.emsesp.org). Pick a language and use any username and password to log in. Note whast you're seeing is static example data so not all features are operational. ## 💖  **Contributors** @@ -84,7 +85,7 @@ If you like **EMS-ESP**, please give it a ✨ on GitHub, or even better fork it ## 📦  **Building** -See the [Building Guide](https://emsesp.org/Building) section of the documentation for instructions on how to build EMS-ESP. +See the [Building the firmware](https://emsesp.org/Building) guide in the documentation for instructions on how to build EMS-ESP from this source code. ## 📢  **Libraries used** From 758d76051fba8ef30c72cbe3fbd06a75a07bf36a Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 28 Jan 2026 21:47:13 +0100 Subject: [PATCH 027/162] update discord URL --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- interface/src/app/main/Help.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8d349fca4..b62301016 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -22,7 +22,7 @@ _Make sure your have performed every step and checked the applicable boxes befor - [ ] Searched the issue in [issues](https://github.com/emsesp/EMS-ESP32/issues) - [ ] Searched the issue in [discussions](https://github.com/emsesp/EMS-ESP32/discussions) - [ ] Searched the issue in the [docs](https://emsesp.org/Troubleshooting/) -- [ ] Searched the issue in the [chat](https://discord.gg/3J3GgnzpyT) +- [ ] Searched the issue in the [chat](https://discord.gg/GP9DPSgeJq) - [ ] Provide the System information in the area below, taken from `http:///api/system` ```json diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 62c86f614..1deb908ac 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -7,5 +7,5 @@ contact_links: url: https://github.com/emsesp/EMS-ESP32/discussions about: EMS-ESP usage Questions, Feature Requests and Projects. - name: EMS-ESP Users Chat - url: https://discord.gg/3J3GgnzpyT + url: https://discord.gg/GP9DPSgeJq about: Chat for feedback, questions and troubleshooting. diff --git a/interface/src/app/main/Help.tsx b/interface/src/app/main/Help.tsx index 320b55ba0..e227cb2b2 100644 --- a/interface/src/app/main/Help.tsx +++ b/interface/src/app/main/Help.tsx @@ -120,7 +120,7 @@ const HelpComponent = () => { label: () => LL.HELP_INFORMATION_1() }, { - href: 'https://discord.gg/3J3GgnzpyT', + href: 'https://discord.gg/GP9DPSgeJq', icon: , label: () => LL.HELP_INFORMATION_2() }, From cca6f875007eb8ba71e7caed8a51dc37f8d0e4e8 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 28 Jan 2026 21:47:20 +0100 Subject: [PATCH 028/162] package update --- interface/package.json | 14 +- interface/pnpm-lock.yaml | 667 ++++++++++++++++++++------------------- mock-api/package.json | 2 +- 3 files changed, 357 insertions(+), 326 deletions(-) diff --git a/interface/package.json b/interface/package.json index 858899beb..2aa2b7d5b 100644 --- a/interface/package.json +++ b/interface/package.json @@ -38,8 +38,8 @@ "magic-string": "^0.30.21", "mime-types": "^3.0.2", "preact": "^10.28.2", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.4", + "react-dom": "^19.2.4", "react-icons": "^5.5.0", "react-router": "^7.13.0", "react-toastify": "^11.0.5", @@ -50,10 +50,10 @@ "@babel/core": "^7.28.6", "@eslint/js": "^9.39.2", "@preact/compat": "^18.3.1", - "@preact/preset-vite": "^2.10.2", + "@preact/preset-vite": "^2.10.3", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.0.10", - "@types/react": "^19.2.9", + "@types/node": "^25.1.0", + "@types/react": "^19.2.10", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", "concurrently": "^9.2.1", @@ -62,10 +62,10 @@ "prettier": "^3.8.1", "rollup-plugin-visualizer": "^6.0.5", "terser": "^5.46.0", - "typescript-eslint": "^8.53.1", + "typescript-eslint": "^8.54.0", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.0.5" }, - "packageManager": "pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316" + "packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 905c47d17..6ce810d9f 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -13,22 +13,22 @@ importers: version: 2.3.1(alova@3.5.0) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.2.9)(react@19.2.3) + version: 11.14.0(@types/react@19.2.10)(react@19.2.4) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) '@mui/icons-material': specifier: ^7.3.7 - version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) + version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) '@mui/material': specifier: ^7.3.7 - version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@preact/compat': specifier: ^18.3.1 version: 18.3.1(preact@10.28.2) '@table-library/react-table-library': specifier: 4.1.15 - version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) alova: specifier: 3.5.0 version: 3.5.0 @@ -54,20 +54,20 @@ importers: specifier: ^10.28.2 version: 10.28.2 react: - specifier: ^19.2.3 - version: 19.2.3 + specifier: ^19.2.4 + version: 19.2.4 react-dom: - specifier: ^19.2.3 - version: 19.2.3(react@19.2.3) + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) react-icons: specifier: ^5.5.0 - version: 5.5.0(react@19.2.3) + version: 5.5.0(react@19.2.4) react-router: specifier: ^7.13.0 - version: 7.13.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 7.13.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-toastify: specifier: ^11.0.5 - version: 11.0.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 11.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) typesafe-i18n: specifier: ^5.26.2 version: 5.26.2(typescript@5.9.3) @@ -82,20 +82,20 @@ importers: specifier: ^9.39.2 version: 9.39.2 '@preact/preset-vite': - specifier: ^2.10.2 - version: 2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) + specifier: ^2.10.3 + version: 2.10.3(@babel/core@7.28.6)(preact@10.28.2)(rollup@4.57.0)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) '@types/node': - specifier: ^25.0.10 - version: 25.0.10 + specifier: ^25.1.0 + version: 25.1.0 '@types/react': - specifier: ^19.2.9 - version: 19.2.9 + specifier: ^19.2.10 + version: 19.2.10 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.9) + version: 19.2.3(@types/react@19.2.10) axe-core: specifier: ^4.11.1 version: 4.11.1 @@ -113,22 +113,22 @@ importers: version: 3.8.1 rollup-plugin-visualizer: specifier: ^6.0.5 - version: 6.0.5(rollup@4.56.0) + version: 6.0.5(rollup@4.57.0) terser: specifier: ^5.46.0 version: 5.46.0 typescript-eslint: - specifier: ^8.53.1 - version: 8.53.1(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.54.0 + version: 8.54.0(eslint@9.39.2)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.0.10)(terser@5.46.0) + version: 7.3.1(@types/node@25.1.0)(terser@5.46.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) + version: 0.6.1(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) vite-tsconfig-paths: specifier: ^6.0.5 - version: 6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) + version: 6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) packages: @@ -652,8 +652,8 @@ packages: peerDependencies: preact: '*' - '@preact/preset-vite@2.10.2': - resolution: {integrity: sha512-K9wHlJOtkE+cGqlyQ5v9kL3Ge0Ql4LlIZjkUTL+1zf3nNdF88F9UZN6VTV8jdzBX9Fl7WSzeNMSDG7qECPmSmg==} + '@preact/preset-vite@2.10.3': + resolution: {integrity: sha512-1SiS+vFItpkNdBs7q585PSAIln0wBeBdcpJYbzPs1qipsb/FssnkUioNXuRsb8ZnU8YEQHr+3v8+/mzWSnTQmg==} peerDependencies: '@babel/core': 7.x vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x @@ -679,128 +679,150 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/rollup-android-arm-eabi@4.56.0': - resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.57.0': + resolution: {integrity: sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.56.0': - resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} + '@rollup/rollup-android-arm64@4.57.0': + resolution: {integrity: sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.56.0': - resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} + '@rollup/rollup-darwin-arm64@4.57.0': + resolution: {integrity: sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.56.0': - resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} + '@rollup/rollup-darwin-x64@4.57.0': + resolution: {integrity: sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.56.0': - resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} + '@rollup/rollup-freebsd-arm64@4.57.0': + resolution: {integrity: sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.56.0': - resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} + '@rollup/rollup-freebsd-x64@4.57.0': + resolution: {integrity: sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.56.0': - resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': + resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==} cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.56.0': - resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} + '@rollup/rollup-linux-arm-musleabihf@4.57.0': + resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==} cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.56.0': - resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} + '@rollup/rollup-linux-arm64-gnu@4.57.0': + resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.56.0': - resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} + '@rollup/rollup-linux-arm64-musl@4.57.0': + resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==} cpu: [arm64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.56.0': - resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} + '@rollup/rollup-linux-loong64-gnu@4.57.0': + resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==} cpu: [loong64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.56.0': - resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} + '@rollup/rollup-linux-loong64-musl@4.57.0': + resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==} cpu: [loong64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.56.0': - resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} + '@rollup/rollup-linux-ppc64-gnu@4.57.0': + resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==} cpu: [ppc64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.56.0': - resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} + '@rollup/rollup-linux-ppc64-musl@4.57.0': + resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==} cpu: [ppc64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.56.0': - resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} + '@rollup/rollup-linux-riscv64-gnu@4.57.0': + resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==} cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.56.0': - resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} + '@rollup/rollup-linux-riscv64-musl@4.57.0': + resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==} cpu: [riscv64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.56.0': - resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} + '@rollup/rollup-linux-s390x-gnu@4.57.0': + resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.56.0': - resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} + '@rollup/rollup-linux-x64-gnu@4.57.0': + resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.56.0': - resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} + '@rollup/rollup-linux-x64-musl@4.57.0': + resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==} cpu: [x64] os: [linux] + libc: [musl] - '@rollup/rollup-openbsd-x64@4.56.0': - resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} + '@rollup/rollup-openbsd-x64@4.57.0': + resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.56.0': - resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} + '@rollup/rollup-openharmony-arm64@4.57.0': + resolution: {integrity: sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.56.0': - resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} + '@rollup/rollup-win32-arm64-msvc@4.57.0': + resolution: {integrity: sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.56.0': - resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} + '@rollup/rollup-win32-ia32-msvc@4.57.0': + resolution: {integrity: sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.56.0': - resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} + '@rollup/rollup-win32-x64-gnu@4.57.0': + resolution: {integrity: sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.56.0': - resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} + '@rollup/rollup-win32-x64-msvc@4.57.0': + resolution: {integrity: sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==} cpu: [x64] os: [win32] @@ -875,8 +897,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.0.10': - resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} + '@types/node@25.1.0': + resolution: {integrity: sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -894,8 +916,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.2.9': - resolution: {integrity: sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==} + '@types/react@19.2.10': + resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -903,63 +925,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.53.1': - resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.53.1 + '@typescript-eslint/parser': ^8.54.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.53.1': - resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.53.1': - resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.53.1': - resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.53.1': - resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.53.1': - resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.53.1': - resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.53.1': - resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.53.1': - resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.53.1': - resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1042,8 +1064,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.17: - resolution: {integrity: sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==} + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true bin-build@3.0.0: @@ -1352,8 +1374,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.278: - resolution: {integrity: sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==} + electron-to-chromium@1.5.279: + resolution: {integrity: sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2524,10 +2546,10 @@ packages: rate-limiter-flexible@5.0.5: resolution: {integrity: sha512-+/dSQfo+3FYwYygUs/V2BBdwGa9nFtakDwKt4l0bnvNB53TNT++QSFewwHX9qXrZJuMe9j+TUaU21lm5ARgqdQ==} - react-dom@19.2.3: - resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} peerDependencies: - react: ^19.2.3 + react: ^19.2.4 react-icons@5.5.0: resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==} @@ -2537,8 +2559,8 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@19.2.3: - resolution: {integrity: sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==} + react-is@19.2.4: + resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==} react-router@7.13.0: resolution: {integrity: sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==} @@ -2575,8 +2597,8 @@ packages: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} read-pkg-up@1.0.1: @@ -2640,8 +2662,8 @@ packages: rollup: optional: true - rollup@4.56.0: - resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} + rollup@4.57.0: + resolution: {integrity: sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2939,8 +2961,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.53.1: - resolution: {integrity: sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==} + typescript-eslint@8.54.0: + resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3277,19 +3299,19 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3)': + '@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) '@emotion/utils': 1.4.2 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.2.3 + react: 19.2.4 optionalDependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 transitivePeerDependencies: - supports-color @@ -3303,26 +3325,26 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) + '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) '@emotion/utils': 1.4.2 - react: 19.2.3 + react: 19.2.4 optionalDependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 transitivePeerDependencies: - supports-color '@emotion/unitless@0.10.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.3)': + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 '@emotion/utils@1.4.2': {} @@ -3498,45 +3520,45 @@ snapshots: '@mui/core-downloads-tracker@7.3.7': {} - '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.9)(react@19.2.3)': + '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.10)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 + '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 optionalDependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 - '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@mui/core-downloads-tracker': 7.3.7 - '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) - '@mui/types': 7.4.10(@types/react@19.2.9) - '@mui/utils': 7.3.7(@types/react@19.2.9)(react@19.2.3) + '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) + '@mui/types': 7.4.10(@types/react@19.2.10) + '@mui/utils': 7.3.7(@types/react@19.2.10)(react@19.2.4) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.2.9) + '@types/react-transition-group': 4.4.12(@types/react@19.2.10) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-is: 19.2.3 - react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-is: 19.2.4 + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) - '@types/react': 19.2.9 + '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) + '@types/react': 19.2.10 - '@mui/private-theming@7.3.7(@types/react@19.2.9)(react@19.2.3)': + '@mui/private-theming@7.3.7(@types/react@19.2.10)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/utils': 7.3.7(@types/react@19.2.9)(react@19.2.3) + '@mui/utils': 7.3.7(@types/react@19.2.10)(react@19.2.4) prop-types: 15.8.1 - react: 19.2.3 + react: 19.2.4 optionalDependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 - '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(react@19.2.3)': + '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/cache': 11.14.0 @@ -3544,44 +3566,44 @@ snapshots: '@emotion/sheet': 1.4.0 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.3 + react: 19.2.4 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) + '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) - '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3)': + '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/private-theming': 7.3.7(@types/react@19.2.9)(react@19.2.3) - '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3))(react@19.2.3) - '@mui/types': 7.4.10(@types/react@19.2.9) - '@mui/utils': 7.3.7(@types/react@19.2.9)(react@19.2.3) + '@mui/private-theming': 7.3.7(@types/react@19.2.10)(react@19.2.4) + '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(react@19.2.4) + '@mui/types': 7.4.10(@types/react@19.2.10) + '@mui/utils': 7.3.7(@types/react@19.2.10)(react@19.2.4) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.3 + react: 19.2.4 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(@types/react@19.2.9)(react@19.2.3) - '@types/react': 19.2.9 + '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) + '@types/react': 19.2.10 - '@mui/types@7.4.10(@types/react@19.2.9)': + '@mui/types@7.4.10(@types/react@19.2.10)': dependencies: '@babel/runtime': 7.28.6 optionalDependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 - '@mui/utils@7.3.7(@types/react@19.2.9)(react@19.2.3)': + '@mui/utils@7.3.7(@types/react@19.2.10)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/types': 7.4.10(@types/react@19.2.9) + '@mui/types': 7.4.10(@types/react@19.2.10) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.2.3 - react-is: 19.2.3 + react: 19.2.4 + react-is: 19.2.4 optionalDependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 '@noble/hashes@1.8.0': {} @@ -3607,20 +3629,21 @@ snapshots: dependencies: preact: 10.28.2 - '@preact/preset-vite@2.10.2(@babel/core@7.28.6)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0))': + '@preact/preset-vite@2.10.3(@babel/core@7.28.6)(preact@10.28.2)(rollup@4.57.0)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': dependencies: '@babel/core': 7.28.6 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.6) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.6) - '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) - '@rollup/pluginutils': 4.2.1 + '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + '@rollup/pluginutils': 5.3.0(rollup@4.57.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.6) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)) + vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) transitivePeerDependencies: - preact + - rollup - supports-color '@prefresh/babel-plugin@0.5.2': {} @@ -3631,7 +3654,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0))': + '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': dependencies: '@babel/core': 7.28.6 '@prefresh/babel-plugin': 0.5.2 @@ -3639,7 +3662,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.28.2 - vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) + vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) transitivePeerDependencies: - supports-color @@ -3648,91 +3671,99 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/rollup-android-arm-eabi@4.56.0': + '@rollup/pluginutils@5.3.0(rollup@4.57.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.57.0 + + '@rollup/rollup-android-arm-eabi@4.57.0': optional: true - '@rollup/rollup-android-arm64@4.56.0': + '@rollup/rollup-android-arm64@4.57.0': optional: true - '@rollup/rollup-darwin-arm64@4.56.0': + '@rollup/rollup-darwin-arm64@4.57.0': optional: true - '@rollup/rollup-darwin-x64@4.56.0': + '@rollup/rollup-darwin-x64@4.57.0': optional: true - '@rollup/rollup-freebsd-arm64@4.56.0': + '@rollup/rollup-freebsd-arm64@4.57.0': optional: true - '@rollup/rollup-freebsd-x64@4.56.0': + '@rollup/rollup-freebsd-x64@4.57.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.56.0': + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.56.0': + '@rollup/rollup-linux-arm-musleabihf@4.57.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.56.0': + '@rollup/rollup-linux-arm64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.56.0': + '@rollup/rollup-linux-arm64-musl@4.57.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.56.0': + '@rollup/rollup-linux-loong64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.56.0': + '@rollup/rollup-linux-loong64-musl@4.57.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.56.0': + '@rollup/rollup-linux-ppc64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.56.0': + '@rollup/rollup-linux-ppc64-musl@4.57.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.56.0': + '@rollup/rollup-linux-riscv64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.56.0': + '@rollup/rollup-linux-riscv64-musl@4.57.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.56.0': + '@rollup/rollup-linux-s390x-gnu@4.57.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.56.0': + '@rollup/rollup-linux-x64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-x64-musl@4.56.0': + '@rollup/rollup-linux-x64-musl@4.57.0': optional: true - '@rollup/rollup-openbsd-x64@4.56.0': + '@rollup/rollup-openbsd-x64@4.57.0': optional: true - '@rollup/rollup-openharmony-arm64@4.56.0': + '@rollup/rollup-openharmony-arm64@4.57.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.56.0': + '@rollup/rollup-win32-arm64-msvc@4.57.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.56.0': + '@rollup/rollup-win32-ia32-msvc@4.57.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.56.0': + '@rollup/rollup-win32-x64-gnu@4.57.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.56.0': + '@rollup/rollup-win32-x64-msvc@4.57.0': optional: true '@sindresorhus/is@0.7.0': {} - '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.9)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@emotion/react': 11.14.0(@types/react@19.2.9)(react@19.2.3) + '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) clsx: 1.1.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-virtualized-auto-sizer: 1.0.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react-window: 1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-virtualized-auto-sizer: 1.0.26(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-window: 1.8.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: @@ -3755,7 +3786,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.0.10 + '@types/node': 25.1.0 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3784,19 +3815,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.1.0 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.1.0 '@types/minimatch@6.0.0': dependencies: minimatch: 10.1.1 - '@types/node@25.0.10': + '@types/node@25.1.0': dependencies: undici-types: 7.16.0 @@ -3804,34 +3835,34 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@19.2.3(@types/react@19.2.9)': + '@types/react-dom@19.2.3(@types/react@19.2.10)': dependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 - '@types/react-transition-group@4.4.12(@types/react@19.2.9)': + '@types/react-transition-group@4.4.12(@types/react@19.2.10)': dependencies: - '@types/react': 19.2.9 + '@types/react': 19.2.10 - '@types/react@19.2.9': + '@types/react@19.2.10': dependencies: csstype: 3.2.3 '@types/responselike@1.0.3': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.1.0 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.1.0 - '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3840,41 +3871,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.53.1': + '@typescript-eslint/scope-manager@8.54.0': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 - '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3882,14 +3913,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.53.1': {} + '@typescript-eslint/types@8.54.0': {} - '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -3899,20 +3930,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.53.1': + '@typescript-eslint/visitor-keys@8.54.0': dependencies: - '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 acorn-jsx@5.3.2(acorn@8.15.0): @@ -3979,7 +4010,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.9.17: {} + baseline-browser-mapping@2.9.19: {} bin-build@3.0.0: dependencies: @@ -4036,9 +4067,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.17 + baseline-browser-mapping: 2.9.19 caniuse-lite: 1.0.30001766 - electron-to-chromium: 1.5.278 + electron-to-chromium: 1.5.279 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4383,7 +4414,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.278: {} + electron-to-chromium@1.5.279: {} emoji-regex@8.0.0: {} @@ -5533,55 +5564,55 @@ snapshots: rate-limiter-flexible@5.0.5: {} - react-dom@19.2.3(react@19.2.3): + react-dom@19.2.4(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 scheduler: 0.27.0 - react-icons@5.5.0(react@19.2.3): + react-icons@5.5.0(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 react-is@16.13.1: {} - react-is@19.2.3: {} + react-is@19.2.4: {} - react-router@7.13.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-router@7.13.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: cookie: 1.1.1 - react: 19.2.3 + react: 19.2.4 set-cookie-parser: 2.7.2 optionalDependencies: - react-dom: 19.2.3(react@19.2.3) + react-dom: 19.2.4(react@19.2.4) - react-toastify@11.0.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-toastify@11.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: clsx: 2.1.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-virtualized-auto-sizer@1.0.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-virtualized-auto-sizer@1.0.26(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-window@1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-window@1.8.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@babel/runtime': 7.28.6 memoize-one: 5.2.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react@19.2.3: {} + react@19.2.4: {} read-pkg-up@1.0.1: dependencies: @@ -5635,44 +5666,44 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-visualizer@6.0.5(rollup@4.56.0): + rollup-plugin-visualizer@6.0.5(rollup@4.57.0): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 4.56.0 + rollup: 4.57.0 - rollup@4.56.0: + rollup@4.57.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.56.0 - '@rollup/rollup-android-arm64': 4.56.0 - '@rollup/rollup-darwin-arm64': 4.56.0 - '@rollup/rollup-darwin-x64': 4.56.0 - '@rollup/rollup-freebsd-arm64': 4.56.0 - '@rollup/rollup-freebsd-x64': 4.56.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 - '@rollup/rollup-linux-arm-musleabihf': 4.56.0 - '@rollup/rollup-linux-arm64-gnu': 4.56.0 - '@rollup/rollup-linux-arm64-musl': 4.56.0 - '@rollup/rollup-linux-loong64-gnu': 4.56.0 - '@rollup/rollup-linux-loong64-musl': 4.56.0 - '@rollup/rollup-linux-ppc64-gnu': 4.56.0 - '@rollup/rollup-linux-ppc64-musl': 4.56.0 - '@rollup/rollup-linux-riscv64-gnu': 4.56.0 - '@rollup/rollup-linux-riscv64-musl': 4.56.0 - '@rollup/rollup-linux-s390x-gnu': 4.56.0 - '@rollup/rollup-linux-x64-gnu': 4.56.0 - '@rollup/rollup-linux-x64-musl': 4.56.0 - '@rollup/rollup-openbsd-x64': 4.56.0 - '@rollup/rollup-openharmony-arm64': 4.56.0 - '@rollup/rollup-win32-arm64-msvc': 4.56.0 - '@rollup/rollup-win32-ia32-msvc': 4.56.0 - '@rollup/rollup-win32-x64-gnu': 4.56.0 - '@rollup/rollup-win32-x64-msvc': 4.56.0 + '@rollup/rollup-android-arm-eabi': 4.57.0 + '@rollup/rollup-android-arm64': 4.57.0 + '@rollup/rollup-darwin-arm64': 4.57.0 + '@rollup/rollup-darwin-x64': 4.57.0 + '@rollup/rollup-freebsd-arm64': 4.57.0 + '@rollup/rollup-freebsd-x64': 4.57.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.0 + '@rollup/rollup-linux-arm-musleabihf': 4.57.0 + '@rollup/rollup-linux-arm64-gnu': 4.57.0 + '@rollup/rollup-linux-arm64-musl': 4.57.0 + '@rollup/rollup-linux-loong64-gnu': 4.57.0 + '@rollup/rollup-linux-loong64-musl': 4.57.0 + '@rollup/rollup-linux-ppc64-gnu': 4.57.0 + '@rollup/rollup-linux-ppc64-musl': 4.57.0 + '@rollup/rollup-linux-riscv64-gnu': 4.57.0 + '@rollup/rollup-linux-riscv64-musl': 4.57.0 + '@rollup/rollup-linux-s390x-gnu': 4.57.0 + '@rollup/rollup-linux-x64-gnu': 4.57.0 + '@rollup/rollup-linux-x64-musl': 4.57.0 + '@rollup/rollup-openbsd-x64': 4.57.0 + '@rollup/rollup-openharmony-arm64': 4.57.0 + '@rollup/rollup-win32-arm64-msvc': 4.57.0 + '@rollup/rollup-win32-ia32-msvc': 4.57.0 + '@rollup/rollup-win32-x64-gnu': 4.57.0 + '@rollup/rollup-win32-x64-msvc': 4.57.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -5936,12 +5967,12 @@ snapshots: dependencies: typescript: 5.9.3 - typescript-eslint@8.53.1(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.54.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -5987,7 +6018,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6012,11 +6043,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) + vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6024,28 +6055,28 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) + vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) - vite-tsconfig-paths@6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(terser@5.46.0)): + vite-tsconfig-paths@6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.0.10)(terser@5.46.0) + vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.0.10)(terser@5.46.0): + vite@7.3.1(@types/node@25.1.0)(terser@5.46.0): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.56.0 + rollup: 4.57.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.0.10 + '@types/node': 25.1.0 fsevents: 2.3.3 terser: 5.46.0 diff --git a/mock-api/package.json b/mock-api/package.json index 8f7388e14..5b8a4efed 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -15,5 +15,5 @@ "itty-router": "^5.0.22", "prettier": "^3.8.1" }, - "packageManager": "pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316" + "packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264" } From 8fc67522902662fa7b4dd5aad6108343391f0ead Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 29 Jan 2026 09:53:20 +0100 Subject: [PATCH 029/162] HA climate mode and icon check --- src/core/emsdevice.cpp | 40 ++++++++++++++++++-------------------- src/devices/thermostat.cpp | 3 ++- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index bac194cfa..1f25c67e6 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -2106,9 +2106,8 @@ bool EMSdevice::generate_values(JsonObject output, const int8_t tag_filter, cons // create the Home Assistant configs for each device value / entity // this is called when an MQTT publish is done via an EMS Device in emsesp.cpp::publish_device_values() void EMSdevice::mqtt_ha_entity_config_create() { - bool create_device_config = !ha_config_done(); // do we need to create the main Discovery device config with this entity? - uint16_t count = 0; - const char * const ** mode_options = nullptr; + bool create_device_config = !ha_config_done(); // do we need to create the main Discovery device config with this entity? + uint16_t count = 0; // check the state of each of the device values // create the discovery topic if if hasn't already been created, not a command (like reset) and is active and visible @@ -2121,15 +2120,13 @@ void EMSdevice::mqtt_ha_entity_config_create() { bool needs_update = !has_config_created || (haclimate_value == 1 ? has_climate_no_rt : !has_climate_no_rt); if (needs_update) { - // if it's a thermostat go fetch the list of modes - if (device_type() == EMSdevice::DeviceType::THERMOSTAT) { - for (auto & dv : devicevalues_) { - // make sure it's a type DeviceValueType::ENUM - if ((dv.type == DeviceValueType::ENUM) && !strcmp(dv.short_name, FL_(mode)[0])) { - // get options - mode_options = dv.options; - break; - } + const char * const ** mode_options = nullptr; + for (auto & d : devicevalues_) { + // make sure mode in same circuit is DeviceValueType::ENUM + if ((d.tag == dv.tag) && (d.type == DeviceValueType::ENUM) && !strcmp(d.short_name, FL_(mode)[0]) && (d.options_size > 0)) { + // get options + mode_options = d.options; + break; } } @@ -2155,21 +2152,22 @@ void EMSdevice::mqtt_ha_entity_config_create() { count++; } - // SRC thermostats mapped to connect/src1/... - /* removed climate for testing - if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(selRoomTemp)[0])) { + // SRC thermostats mapped to connect/src1/... always contains mode, seltemp, currtemp + if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(mode)[0])) { + // add icon if we have one const char * icon = nullptr; for (auto & d : devicevalues_) { - if (d.tag == dv.tag && !strcmp(d.short_name, FL_(icon)[0]) && *(uint8_t *)d.value_p != 0) { - icon = d.options[*(uint8_t *)d.value_p][0]; + if (d.tag == dv.tag && !strcmp(d.short_name, FL_(icon)[0]) && (dv.type == DeviceValueType::ENUM)) { + uint8_t val = *(uint8_t *)(d.value_p); + if (val != 0 && val < d.options_size) { + icon = d.options[val][0]; + } break; } } - // add all modes - auto, heat, off, cool - // https://github.com/emsesp/EMS-ESP32/issues/2636 - Mqtt::publish_ha_climate_config(dv, true, nullptr, false, icon); + Mqtt::publish_ha_climate_config(dv, true, dv.options, false, icon); + count++; } - */ #ifndef EMSESP_STANDALONE // always create minimum one config diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index b88a22e6c..f0901cd2f 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -476,7 +476,8 @@ void Thermostat::add_ha_climate(std::shared_ptr hc) const { return; } - if (Helpers::hasValue(hc->selTemp) && is_readable(&hc->selTemp)) { + // create climate only if we have modes + if (Helpers::hasValue(hc->mode) && Helpers::hasValue(hc->selTemp) && is_readable(&hc->selTemp)) { if (Helpers::hasValue(hc->roomTemp) && is_readable(&hc->roomTemp)) { hc->climate = 1; // use roomTemp as we have a sensor } else { From 5641d53cc30a974d7cbbee9442e6711afb34aa0d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 29 Jan 2026 18:26:03 +0100 Subject: [PATCH 030/162] revert syslog buffer (still in heap) --- src/core/system.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 82d52696b..d031a05f2 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -501,7 +501,7 @@ void System::syslog_init() { #ifndef EMSESP_STANDALONE if (syslog_enabled_) { // start & configure syslog - syslog_.maximum_log_messages(psram_ ? 250 : 10); + syslog_.maximum_log_messages(10); syslog_.log_level((uuid::log::Level)syslog_level_); syslog_.mark_interval(syslog_mark_interval_); syslog_.destination(syslog_host_.c_str(), syslog_port_); From 92d82c0a0011f015a4cfedde34dc72330c4ecb00 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 30 Jan 2026 07:50:54 +0100 Subject: [PATCH 031/162] remove burnMinPower, #2918 --- CHANGELOG_LATEST.md | 1 + src/devices/boiler.cpp | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index d808c578f..da281397c 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -16,3 +16,4 @@ For more details go to [emsesp.org](https://emsesp.org/). - weblogbuffer up to 1000 messages with PSRAM, mentioned in [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) - validate custom entity writes, [#2931](https://github.com/emsesp/EMS-ESP32/issues/2931) +- remove wrong burnMinPower [#2918](https://github.com/emsesp/EMS-ESP32/issues/2918) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 4af5dd1f0..3b2b49c1e 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -213,12 +213,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &fanWork_, DeviceValueType::BOOL, FL_(fanWork), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ignWork_, DeviceValueType::BOOL, FL_(ignWork), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &oilPreHeat_, DeviceValueType::BOOL, FL_(oilPreHeat), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &burnMinPower_, - DeviceValueType::UINT8, - FL_(burnMinPower), - DeviceValueUOM::PERCENT, - MAKE_CF_CB(set_min_power)); + // remove burnMinPower, #2918 + // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + // &burnMinPower_, + // DeviceValueType::UINT8, + // FL_(burnMinPower), + // DeviceValueUOM::PERCENT, + // MAKE_CF_CB(set_min_power)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnMaxPower_, DeviceValueType::UINT8, @@ -1290,7 +1291,7 @@ void Boiler::process_UBAFactory(std::shared_ptr telegram) { has_update(nomPower_, nomPower); } if (min <= max) { - set_minmax(&burnMinPower_, 0, max); + // set_minmax(&burnMinPower_, 0, max); // removed #2918 set_minmax(&burnMaxPower_, min, max); set_minmax(&wwMaxPower_, min, max); set_minmax(&selBurnPow_, 0, max); @@ -1376,7 +1377,7 @@ void Boiler::process_UBAParameters(std::shared_ptr telegram) { has_update(telegram, heatingActivated_, 0); has_update(telegram, heatingTemp_, 1); has_update(telegram, burnMaxPower_, 2); - has_update(telegram, burnMinPower_, 3); + // has_update(telegram, burnMinPower_, 3); // removed #2918 has_update(telegram, boilHystOff_, 4); has_update(telegram, boilHystOn_, 5); has_update(telegram, burnMinPeriod_, 6); @@ -1595,7 +1596,7 @@ void Boiler::process_UBAParametersPlus(std::shared_ptr telegram) has_update(telegram, heatingActivated_, 0); has_update(telegram, heatingTemp_, 1); has_update(telegram, burnMaxPower_, 4); - has_update(telegram, burnMinPower_, 5); + // has_update(telegram, burnMinPower_, 5); // removed #2918 has_update(telegram, boilHystOff_, 8); has_update(telegram, boilHystOn_, 9); has_update(telegram, burnMinPeriod_, 10); From 958ec1002b9c6416de33bded159af93cf7000dbb Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 30 Jan 2026 07:56:39 +0100 Subject: [PATCH 032/162] dev.2 --- src/emsesp_version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 90d3b27d0..f7ab68dea 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.1" +#define EMSESP_APP_VERSION "3.8.2-dev.2" From 6bac6bbfeb0f6b1226424cce10b1eeaa91402686 Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Fri, 30 Jan 2026 07:08:12 +0000 Subject: [PATCH 033/162] chore: update generated files for v3.8.2-dev.2 --- docs/Modbus-Entity-Registers.md | 986 ++++++++++++-------------- docs/dump_entities.csv | 959 ++++++++++++------------- src/core/modbus_entity_parameters.hpp | 45 +- 3 files changed, 954 insertions(+), 1036 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index fd62fa6ad..477e5fb9d 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -305,31 +305,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -370,9 +368,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -426,7 +424,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -460,31 +458,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -525,9 +521,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -581,7 +577,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -615,31 +611,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -680,9 +674,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -736,7 +730,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -770,31 +764,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -835,9 +827,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -891,7 +883,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -925,31 +917,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -990,9 +980,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1046,7 +1036,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1080,31 +1070,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1145,9 +1133,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1201,7 +1189,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1235,31 +1223,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1300,9 +1286,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1356,7 +1342,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1390,31 +1376,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1455,9 +1439,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1511,7 +1495,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1545,31 +1529,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1610,9 +1592,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1666,7 +1648,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1700,31 +1682,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1765,9 +1745,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1821,7 +1801,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1855,31 +1835,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1920,9 +1898,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1976,7 +1954,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2010,31 +1988,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2075,9 +2051,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2131,7 +2107,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2165,31 +2141,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2230,9 +2204,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2286,7 +2260,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2320,31 +2294,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2385,9 +2357,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2441,7 +2413,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2475,31 +2447,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2540,9 +2510,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2596,7 +2566,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2630,31 +2600,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2695,9 +2663,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2751,7 +2719,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2785,31 +2753,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2850,9 +2816,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2906,7 +2872,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2940,31 +2906,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3005,9 +2969,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3061,7 +3025,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -3095,31 +3059,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3160,9 +3122,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3216,7 +3178,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -3250,31 +3212,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3315,9 +3275,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3371,7 +3331,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -3943,31 +3903,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4008,9 +3966,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4064,7 +4022,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4098,31 +4056,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4163,9 +4119,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4219,7 +4175,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4253,31 +4209,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4318,9 +4272,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4374,7 +4328,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4408,31 +4362,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4473,9 +4425,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4529,7 +4481,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4563,31 +4515,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4628,9 +4578,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4684,7 +4634,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4718,31 +4668,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4783,9 +4731,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4839,7 +4787,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4850,14 +4798,14 @@ uint24 | shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | |-|-|-|-|-|-|-|-|-| -| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 276 | 1 | 1/10 | -| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 277 | 1 | 1 | +| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 275 | 1 | 1/10 | +| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 276 | 1 | 1 | | dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | uint8 -| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 278 | 1 | 1 | +| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 277 | 1 | 1 | uint8 -| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 279 | 1 | 1 | -| heating | heating | boolean | | false | DEVICE_DATA | 280 | 1 | 1 | +| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 278 | 1 | 1 | +| heating | heating | boolean | | false | DEVICE_DATA | 279 | 1 | 1 | | reset | reset | cmd | | true | DEVICE_DATA | 0 | 1 | 1 | | chimneysweeper | chimney sweeper | cmd | | true | DEVICE_DATA | 1 | 1 | 1 | | heatingoff | force heating off | boolean | | true | DEVICE_DATA | 2 | 1 | 1 | @@ -4913,9 +4861,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4996,31 +4944,29 @@ uint8 | ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | | oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | -uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -5061,9 +5007,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -5117,7 +5063,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index 0bf801125..7fe1da4b7 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -234,21 +234,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Greenstar 2000",boiler,11,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Greenstar 2000",boiler,11,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Greenstar 2000",boiler,11,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Greenstar 2000",boiler,11,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Greenstar 2000",boiler,11,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Greenstar 2000",boiler,11,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Greenstar 2000",boiler,11,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Greenstar 2000",boiler,11,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Greenstar 2000",boiler,11,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Greenstar 2000",boiler,11,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -281,9 +280,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -326,7 +325,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Greenstar 2000",boiler,11,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -351,21 +350,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"C1200W",boiler,12,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"C1200W",boiler,12,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"C1200W",boiler,12,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"C1200W",boiler,12,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"C1200W",boiler,12,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"C1200W",boiler,12,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"C1200W",boiler,12,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "C1200W",boiler,12,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "C1200W",boiler,12,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "C1200W",boiler,12,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -398,9 +396,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -443,7 +441,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "C1200W",boiler,12,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -468,21 +466,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"CS5800iG",boiler,16,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"CS5800iG",boiler,16,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"CS5800iG",boiler,16,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"CS5800iG",boiler,16,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"CS5800iG",boiler,16,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"CS5800iG",boiler,16,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"CS5800iG",boiler,16,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "CS5800iG",boiler,16,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "CS5800iG",boiler,16,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "CS5800iG",boiler,16,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -515,9 +512,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -560,7 +557,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "CS5800iG",boiler,16,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -585,21 +582,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -632,9 +628,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -677,7 +673,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -702,21 +698,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -749,9 +744,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -794,7 +789,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -819,21 +814,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cascade CM10",boiler,81,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cascade CM10",boiler,81,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cascade CM10",boiler,81,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cascade CM10",boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Cascade CM10",boiler,81,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Cascade CM10",boiler,81,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Cascade CM10",boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Cascade CM10",boiler,81,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade CM10",boiler,81,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade CM10",boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -866,9 +860,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -911,7 +905,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cascade CM10",boiler,81,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -936,21 +930,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax Plus GB022",boiler,84,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax Plus GB022",boiler,84,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax Plus GB022",boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Logamax Plus GB022",boiler,84,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Logamax Plus GB022",boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Logamax Plus GB022",boiler,84,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus GB022",boiler,84,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus GB022",boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -983,9 +976,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus GB022",boiler,84,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus GB022",boiler,84,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1028,7 +1021,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus GB022",boiler,84,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax Plus GB022",boiler,84,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1053,21 +1046,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1100,9 +1092,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1145,7 +1137,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1170,21 +1162,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Topline, GB162",boiler,115,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Topline, GB162",boiler,115,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Topline, GB162",boiler,115,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Topline, GB162",boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Topline, GB162",boiler,115,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Topline, GB162",boiler,115,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Topline, GB162",boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Topline, GB162",boiler,115,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Topline, GB162",boiler,115,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Topline, GB162",boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1217,9 +1208,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1262,7 +1253,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Topline, GB162",boiler,115,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1287,21 +1278,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cascade MCM10",boiler,121,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cascade MCM10",boiler,121,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cascade MCM10",boiler,121,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cascade MCM10",boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Cascade MCM10",boiler,121,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Cascade MCM10",boiler,121,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Cascade MCM10",boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Cascade MCM10",boiler,121,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade MCM10",boiler,121,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade MCM10",boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1334,9 +1324,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1379,7 +1369,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cascade MCM10",boiler,121,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1404,21 +1394,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Proline",boiler,122,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Proline",boiler,122,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Proline",boiler,122,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Proline",boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Proline",boiler,122,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Proline",boiler,122,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Proline",boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Proline",boiler,122,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Proline",boiler,122,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Proline",boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1451,9 +1440,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Proline",boiler,122,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1496,7 +1485,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Proline",boiler,122,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1521,21 +1510,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1568,9 +1556,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1613,7 +1601,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1638,21 +1626,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"GB212",boiler,131,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"GB212",boiler,131,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"GB212",boiler,131,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"GB212",boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"GB212",boiler,131,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"GB212",boiler,131,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"GB212",boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "GB212",boiler,131,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GB212",boiler,131,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GB212",boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1685,9 +1672,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GB212",boiler,131,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1730,7 +1717,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "GB212",boiler,131,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1755,21 +1742,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"GC7000F",boiler,132,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"GC7000F",boiler,132,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"GC7000F",boiler,132,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"GC7000F",boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"GC7000F",boiler,132,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"GC7000F",boiler,132,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"GC7000F",boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "GC7000F",boiler,132,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GC7000F",boiler,132,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GC7000F",boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1802,9 +1788,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1847,7 +1833,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "GC7000F",boiler,132,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1872,21 +1858,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1919,9 +1904,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1964,7 +1949,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1989,21 +1974,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Greenstar 30Ri Compact",boiler,154,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Greenstar 30Ri Compact",boiler,154,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Greenstar 30Ri Compact",boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Greenstar 30Ri Compact",boiler,154,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Greenstar 30Ri Compact",boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Greenstar 30Ri Compact",boiler,154,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Greenstar 30Ri Compact",boiler,154,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Greenstar 30Ri Compact",boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2036,9 +2020,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar 30Ri Compact",boiler,154,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar 30Ri Compact",boiler,154,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2081,7 +2065,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2106,21 +2090,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Suprapur-o",boiler,155,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Suprapur-o",boiler,155,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Suprapur-o",boiler,155,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Suprapur-o",boiler,155,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Suprapur-o",boiler,155,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Suprapur-o",boiler,155,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Suprapur-o",boiler,155,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Suprapur-o",boiler,155,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Suprapur-o",boiler,155,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Suprapur-o",boiler,155,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2153,9 +2136,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2198,7 +2181,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Suprapur-o",boiler,155,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2223,21 +2206,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cerapur Aero",boiler,167,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cerapur Aero",boiler,167,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cerapur Aero",boiler,167,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cerapur Aero",boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Cerapur Aero",boiler,167,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Cerapur Aero",boiler,167,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Cerapur Aero",boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Cerapur Aero",boiler,167,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cerapur Aero",boiler,167,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cerapur Aero",boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2270,9 +2252,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2315,7 +2297,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cerapur Aero",boiler,167,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2340,21 +2322,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Hybrid Heatpump",boiler,168,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Hybrid Heatpump",boiler,168,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Hybrid Heatpump",boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Hybrid Heatpump",boiler,168,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Hybrid Heatpump",boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Hybrid Heatpump",boiler,168,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Hybrid Heatpump",boiler,168,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Hybrid Heatpump",boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2387,9 +2368,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2432,7 +2413,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Hybrid Heatpump",boiler,168,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2457,21 +2438,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logano GB212",boiler,170,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logano GB212",boiler,170,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logano GB212",boiler,170,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logano GB212",boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Logano GB212",boiler,170,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Logano GB212",boiler,170,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Logano GB212",boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Logano GB212",boiler,170,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB212",boiler,170,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB212",boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2504,9 +2484,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2549,7 +2529,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logano GB212",boiler,170,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3002,21 +2982,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3049,9 +3028,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3094,7 +3073,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3119,21 +3098,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax U122, Cerapur",boiler,203,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax U122, Cerapur",boiler,203,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax U122, Cerapur",boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Logamax U122, Cerapur",boiler,203,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Logamax U122, Cerapur",boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Logamax U122, Cerapur",boiler,203,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax U122, Cerapur",boiler,203,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax U122, Cerapur",boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3166,9 +3144,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax U122, Cerapur",boiler,203,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax U122, Cerapur",boiler,203,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3211,7 +3189,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3236,21 +3214,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Ecomline Excellent",boiler,206,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Ecomline Excellent",boiler,206,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Ecomline Excellent",boiler,206,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Ecomline Excellent",boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Ecomline Excellent",boiler,206,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Ecomline Excellent",boiler,206,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Ecomline Excellent",boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Ecomline Excellent",boiler,206,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Ecomline Excellent",boiler,206,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Ecomline Excellent",boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3283,9 +3260,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3328,7 +3305,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Ecomline Excellent",boiler,206,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3353,21 +3330,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3400,9 +3376,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3445,7 +3421,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3470,21 +3446,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cascade MC400",boiler,210,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cascade MC400",boiler,210,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cascade MC400",boiler,210,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cascade MC400",boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Cascade MC400",boiler,210,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Cascade MC400",boiler,210,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Cascade MC400",boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Cascade MC400",boiler,210,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade MC400",boiler,210,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade MC400",boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3517,9 +3492,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3562,7 +3537,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cascade MC400",boiler,210,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3587,21 +3562,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"EasyControl Adapter",boiler,211,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"EasyControl Adapter",boiler,211,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"EasyControl Adapter",boiler,211,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"EasyControl Adapter",boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"EasyControl Adapter",boiler,211,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"EasyControl Adapter",boiler,211,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"EasyControl Adapter",boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "EasyControl Adapter",boiler,211,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "EasyControl Adapter",boiler,211,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "EasyControl Adapter",boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3634,9 +3608,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3679,16 +3653,16 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16,C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,276,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,277,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16,C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,275,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,276,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,5,9,1,75,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=0),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,278,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=0),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,279,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,5,0,1,280,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=0),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,277,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=0),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,278,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,5,0,1,279,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 @@ -3735,9 +3709,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3801,21 +3775,20 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3848,9 +3821,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3893,7 +3866,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index 2d29ea60d..db68e09fa 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -175,29 +175,28 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 253, 1), // fanwork REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 254, 1), // ignwork REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 255, 1), // oilpreheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPower), 256, 1), // burnminpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 257, 1), // burnmaxpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 258, 1), // burnminperiod - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 259, 1), // absburnpow - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 260, 1), // heatblock - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 261, 1), // boilhyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 262, 1), // boilhystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 263, 1), // boil2hyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 264, 1), // boil2hystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 265, 1), // curveon - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 266, 1), // curvebase - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 267, 1), // curveend - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 268, 1), // summertemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 269, 1), // nofrostmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 270, 1), // nofrosttemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 271, 2), // gasmeterheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 273, 2), // nrgheat2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 275, 1), // nompower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 276, 1), // netflowtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 277, 1), // heatvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 278, 1), // keepwarmtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 279, 1), // setreturntemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 280, 1), // heating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 256, 1), // burnmaxpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 257, 1), // burnminperiod + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 258, 1), // absburnpow + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 259, 1), // heatblock + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 260, 1), // boilhyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 261, 1), // boilhystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 262, 1), // boil2hyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 263, 1), // boil2hystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 264, 1), // curveon + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 265, 1), // curvebase + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 266, 1), // curveend + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 267, 1), // summertemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 268, 1), // nofrostmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 269, 1), // nofrosttemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 270, 2), // gasmeterheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 272, 2), // nrgheat2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 274, 1), // nompower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 275, 1), // netflowtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 276, 1), // heatvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 277, 1), // keepwarmtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 278, 1), // setreturntemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 279, 1), // heating REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw), 0, 2), // nrg REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(meterWw), 2, 2), // meter REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(upTimeCompWw), 4, 2), // uptimecomp From 28b662ad4319481f7f80599876cb64b6d7035e6f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 30 Jan 2026 08:57:14 +0100 Subject: [PATCH 034/162] update to ESPAsyncWebServer 3.9.6 --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index b031b9a8f..19b466fdc 100644 --- a/platformio.ini +++ b/platformio.ini @@ -106,7 +106,7 @@ board_build.filesystem = littlefs lib_deps = bblanchon/ArduinoJson @ 7.4.2 ESP32Async/AsyncTCP @ 3.4.10 - ESP32Async/ESPAsyncWebServer @ 3.9.5 + ESP32Async/ESPAsyncWebServer @ 3.9.6 https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 From 85cc85a923b6d718464d0634b51f23a0c9d82ce5 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 30 Jan 2026 09:56:38 +0100 Subject: [PATCH 035/162] remove `MAX_LOG_ENTRIES` check in logger web page --- interface/src/app/status/SystemLog.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/interface/src/app/status/SystemLog.tsx b/interface/src/app/status/SystemLog.tsx index 0854c8cc4..bc167f457 100644 --- a/interface/src/app/status/SystemLog.tsx +++ b/interface/src/app/status/SystemLog.tsx @@ -38,8 +38,6 @@ import type { LogEntry, LogSettings } from 'types'; import { LogLevel } from 'types'; import { updateValueDirty, useRest } from 'utils'; -const MAX_LOG_ENTRIES = 10000; // Limit log entries to prevent memory issues - const TextColors: Record = { [LogLevel.ERROR]: '#ff0000', // red [LogLevel.WARNING]: '#ff0000', // red @@ -200,10 +198,6 @@ const SystemLog = () => { } } const newLog = [...log, logentry]; - // Limit log entries to prevent memory issues - only slice when necessary - if (newLog.length > MAX_LOG_ENTRIES) { - return newLog.slice(-MAX_LOG_ENTRIES); - } return newLog; }); }, []); From 3a0e46f064502ff0e32072fb63d30a56f4e0414c Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 30 Jan 2026 11:18:27 +0100 Subject: [PATCH 036/162] update expected test data --- test/test_api/test_api.h | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/test/test_api/test_api.h b/test/test_api/test_api.h index fcd00d560..aa52e79be 100644 --- a/test/test_api/test_api.h +++ b/test/test_api/test_api.h @@ -17,7 +17,7 @@ void test_2() { "[{\"info\":\"list all values (verbose)\",\"values\":\"list all values\",\"commands\":\"list all commands\",\"entities\":\"list all " "entities\",\"boil2hystoff\":\"hysteresis stage 2 off temperature\",\"boil2hyston\":\"hysteresis stage 2 on temperature\",\"boilhystoff\":\"hysteresis " "off temperature\",\"boilhyston\":\"hysteresis on temperature\",\"burnmaxpower\":\"burner max power\",\"burnminperiod\":\"burner min " - "period\",\"burnminpower\":\"burner min power\",\"chimneysweeper\":\"chimney sweeper\",\"coldshot\":\"send a cold shot of " + "period\",\"chimneysweeper\":\"chimney sweeper\",\"coldshot\":\"send a cold shot of " "water\",\"curvebase\":\"heatingcurve base\",\"curveend\":\"heatingcurve end\",\"curveon\":\"heatingcurve " "on\",\"dhw[n].activated\":\"activated\",\"dhw[n].chargeoptimization\":\"charge optimization\",\"dhw[n].circ\":\"circulation " "active\",\"dhw[n].circmode\":\"circulation pump mode\",\"dhw[n].circpump\":\"circulation pump " @@ -148,14 +148,14 @@ void test_12() { } void test_13() { - auto expected_response = "[{\"hc1\":{\"seltemp\":20.5,\"currtemp\":22.8,\"haclimate\":\"roomTemp\",\"modetype\":\"heat\",\"remotetemp\":null},\"hc2\":{" - "\"seltemp\":20.6,\"currtemp\":22.9,\"haclimate\":\"roomTemp\",\"modetype\":\"eco\",\"remotetemp\":null},\"hc3\":{\"seltemp\":20." - "7,\"currtemp\":23,\"haclimate\":\"roomTemp\",\"modetype\":\"nofrost\",\"remotetemp\":null},\"dhw\":{}}]"; + auto expected_response = "[{\"hc1\":{\"seltemp\":20.5,\"currtemp\":22.8,\"modetype\":\"heat\",\"remotetemp\":null},\"hc2\":{" + "\"seltemp\":20.6,\"currtemp\":22.9,\"modetype\":\"eco\",\"remotetemp\":null},\"hc3\":{\"seltemp\":20." + "7,\"currtemp\":23,\"modetype\":\"nofrost\",\"remotetemp\":null},\"dhw\":{}}]"; TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat")); } void test_14() { - auto expected_response = "[{\"seltemp\":20.5,\"currtemp\":22.8,\"haclimate\":\"roomTemp\",\"modetype\":\"heat\",\"remotetemp\":null}]"; + auto expected_response = "[{\"seltemp\":20.5,\"currtemp\":22.8,\"modetype\":\"heat\",\"remotetemp\":null}]"; TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat/hc1/values")); } @@ -163,12 +163,11 @@ void test_15() { auto expected_response = "[{\"api_data\":\"# HELP emsesp_seltemp selected room temperature, °C, readable, writeable, visible\\n# TYPE emsesp_seltemp " "gauge\\nemsesp_seltemp{circuit=\\\"hc1\\\"} 20.50\\n# HELP emsesp_currtemp current room temperature, °C, readable, visible\\n# TYPE emsesp_currtemp " - "gauge\\nemsesp_currtemp{circuit=\\\"hc1\\\"} 22.80\\n# HELP emsesp_haclimate mqtt discovery current room temperature, enum, (0: selTemp; 1: " - "roomTemp), readable, visible\\n# TYPE emsesp_haclimate gauge\\nemsesp_haclimate{circuit=\\\"hc1\\\"} 1\\n# HELP emsesp_modetype mode type, enum, (0: " + "gauge\\nemsesp_currtemp{circuit=\\\"hc1\\\"} 22.80\\n# HELP emsesp_modetype mode type, enum, (0: " "nofrost; 1: eco; 2: heat), readable, visible\\n# TYPE emsesp_modetype gauge\\nemsesp_modetype{circuit=\\\"hc1\\\"} " - "2\\nemsesp_seltemp{circuit=\\\"hc2\\\"} 20.60\\nemsesp_currtemp{circuit=\\\"hc2\\\"} 22.90\\nemsesp_haclimate{circuit=\\\"hc2\\\"} " - "1\\nemsesp_modetype{circuit=\\\"hc2\\\"} 1\\nemsesp_seltemp{circuit=\\\"hc3\\\"} 20.70\\nemsesp_currtemp{circuit=\\\"hc3\\\"} " - "23\\nemsesp_haclimate{circuit=\\\"hc3\\\"} 1\\nemsesp_modetype{circuit=\\\"hc3\\\"} 0\\n\"}]"; + "2\\nemsesp_seltemp{circuit=\\\"hc2\\\"} 20.60\\nemsesp_currtemp{circuit=\\\"hc2\\\"} " + "22.90\\nemsesp_modetype{circuit=\\\"hc2\\\"} 1\\nemsesp_seltemp{circuit=\\\"hc3\\\"} 20.70\\nemsesp_currtemp{circuit=\\\"hc3\\\"} " + "23\\nemsesp_modetype{circuit=\\\"hc3\\\"} 0\\n\"}]"; TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat/metrics")); } @@ -237,7 +236,7 @@ void test_23() { "Boiler\",\"deviceID\":\"0x08\",\"productID\":123,\"brand\":\"\",\"version\":\"01.00\",\"entities\":39,\"handlersReceived\":\"0x18\"," "\"handlersFetched\":\"0x14 0x33\",\"handlersPending\":\"0xBF 0x10 0x11 0xC2 0xC6 0x15 0x1C 0x19 0x1A 0x35 0x34 0x2A 0xD1 0xE3 0xE4 0xE5 0xE9 0x02E0 " "0x2E " - "0x3B\"},{\"type\":\"thermostat\",\"name\":\"FW120\",\"deviceID\":\"0x10\",\"productID\":192,\"brand\":\"\",\"version\":\"01.00\",\"entities\":15," + "0x3B\"},{\"type\":\"thermostat\",\"name\":\"FW120\",\"deviceID\":\"0x10\",\"productID\":192,\"brand\":\"\",\"version\":\"01.00\",\"entities\":12," "\"handlersReceived\":\"0x016F\",\"handlersFetched\":\"0x0170 0x0171\",\"handlersPending\":\"0xA3 0x06 0xA2 0x12 0x13 0x0172 0x0165 " "0x0168\"},{\"type\":\"temperaturesensor\",\"name\":\"temperaturesensor\",\"entities\":3},{\"type\":\"analogsensor\",\"name\":\"analogsensor\"," "\"entities\":5},{\"type\":\"scheduler\",\"name\":\"scheduler\",\"entities\":2},{\"type\":\"custom\",\"name\":\"custom\",\"entities\":4}]}]"; @@ -267,7 +266,7 @@ void test_24() { "Boiler\",\"deviceID\":\"0x08\",\"productID\":123,\"brand\":\"\",\"version\":\"01.00\",\"entities\":39,\"handlersReceived\":\"0x18\"," "\"handlersFetched\":\"0x14 0x33\",\"handlersPending\":\"0xBF 0x10 0x11 0xC2 0xC6 0x15 0x1C 0x19 0x1A 0x35 0x34 0x2A 0xD1 0xE3 0xE4 0xE5 0xE9 0x02E0 " "0x2E " - "0x3B\"},{\"type\":\"thermostat\",\"name\":\"FW120\",\"deviceID\":\"0x10\",\"productID\":192,\"brand\":\"\",\"version\":\"01.00\",\"entities\":15," + "0x3B\"},{\"type\":\"thermostat\",\"name\":\"FW120\",\"deviceID\":\"0x10\",\"productID\":192,\"brand\":\"\",\"version\":\"01.00\",\"entities\":12," "\"handlersReceived\":\"0x016F\",\"handlersFetched\":\"0x0170 0x0171\",\"handlersPending\":\"0xA3 0x06 0xA2 0x12 0x13 0x0172 0x0165 " "0x0168\"},{\"type\":\"temperaturesensor\",\"name\":\"temperaturesensor\",\"entities\":3},{\"type\":\"analogsensor\",\"name\":\"analogsensor\"," "\"entities\":5},{\"type\":\"scheduler\",\"name\":\"scheduler\",\"entities\":2},{\"type\":\"custom\",\"name\":\"custom\",\"entities\":4}]}]"; @@ -353,7 +352,7 @@ void test_25() { "gauge\\nemsesp_device_entities{type=\\\"boiler\\\", name=\\\"My Custom Boiler\\\", deviceid=\\\"0x08\\\", version=\\\"01.00\\\"} " "39\\nemsesp_device_productid{type=\\\"thermostat\\\", name=\\\"FW120\\\", deviceid=\\\"0x10\\\", version=\\\"01.00\\\"} " "192\\nemsesp_device_entities{type=\\\"thermostat\\\", name=\\\"FW120\\\", deviceid=\\\"0x10\\\", version=\\\"01.00\\\"} " - "15\\nemsesp_device_entities{type=\\\"temperaturesensor\\\", name=\\\"temperaturesensor\\\"} 3\\nemsesp_device_entities{type=\\\"analogsensor\\\", " + "12\\nemsesp_device_entities{type=\\\"temperaturesensor\\\", name=\\\"temperaturesensor\\\"} 3\\nemsesp_device_entities{type=\\\"analogsensor\\\", " "name=\\\"analogsensor\\\"} 5\\nemsesp_device_entities{type=\\\"scheduler\\\", name=\\\"scheduler\\\"} 2\\nemsesp_device_entities{type=\\\"custom\\\", " "name=\\\"custom\\\"} 4\\n\"}]"; TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/metrics")); From abdf2c503704744a3ecb1c2b117d5e8325ce664f Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 1 Feb 2026 12:02:04 +0100 Subject: [PATCH 037/162] package update --- interface/package.json | 4 +- interface/pnpm-lock.yaml | 396 +++++++++++++++++++-------------------- mock-api/pnpm-lock.yaml | 58 +++--- 3 files changed, 229 insertions(+), 229 deletions(-) diff --git a/interface/package.json b/interface/package.json index 2aa2b7d5b..e9445eed1 100644 --- a/interface/package.json +++ b/interface/package.json @@ -37,7 +37,7 @@ "jwt-decode": "^4.0.0", "magic-string": "^0.30.21", "mime-types": "^3.0.2", - "preact": "^10.28.2", + "preact": "^10.28.3", "react": "^19.2.4", "react-dom": "^19.2.4", "react-icons": "^5.5.0", @@ -47,7 +47,7 @@ "typescript": "^5.9.3" }, "devDependencies": { - "@babel/core": "^7.28.6", + "@babel/core": "^7.29.0", "@eslint/js": "^9.39.2", "@preact/compat": "^18.3.1", "@preact/preset-vite": "^2.10.3", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 6ce810d9f..ec6bacc82 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -25,7 +25,7 @@ importers: version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@preact/compat': specifier: ^18.3.1 - version: 18.3.1(preact@10.28.2) + version: 18.3.1(preact@10.28.3) '@table-library/react-table-library': specifier: 4.1.15 version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -51,8 +51,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 preact: - specifier: ^10.28.2 - version: 10.28.2 + specifier: ^10.28.3 + version: 10.28.3 react: specifier: ^19.2.4 version: 19.2.4 @@ -76,14 +76,14 @@ importers: version: 5.9.3 devDependencies: '@babel/core': - specifier: ^7.28.6 - version: 7.28.6 + specifier: ^7.29.0 + version: 7.29.0 '@eslint/js': specifier: ^9.39.2 version: 9.39.2 '@preact/preset-vite': specifier: ^2.10.3 - version: 2.10.3(@babel/core@7.28.6)(preact@10.28.2)(rollup@4.57.0)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + version: 2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) @@ -113,7 +113,7 @@ importers: version: 3.8.1 rollup-plugin-visualizer: specifier: ^6.0.5 - version: 6.0.5(rollup@4.57.0) + version: 6.0.5(rollup@4.57.1) terser: specifier: ^5.46.0 version: 5.46.0 @@ -140,20 +140,20 @@ packages: '@alova/shared@1.3.2': resolution: {integrity: sha512-1XvDLWgYpVZ99MmLl1f3Fw4T6S6pPYk5afz5cwRVjuq8JXEGsDn9IygDKfvRyWqkqCBx7Jif07LIct1O+MVEow==} - '@babel/code-frame@7.28.6': - resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.6': - resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.6': - resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.6': - resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + '@babel/generator@7.29.0': + resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -198,8 +198,8 @@ packages: resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.6': - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true @@ -229,12 +229,12 @@ packages: resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.6': - resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.6': - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@emotion/babel-plugin@11.13.5': @@ -688,141 +688,141 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.57.0': - resolution: {integrity: sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==} + '@rollup/rollup-android-arm-eabi@4.57.1': + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.57.0': - resolution: {integrity: sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==} + '@rollup/rollup-android-arm64@4.57.1': + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.57.0': - resolution: {integrity: sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==} + '@rollup/rollup-darwin-arm64@4.57.1': + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.57.0': - resolution: {integrity: sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==} + '@rollup/rollup-darwin-x64@4.57.1': + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.57.0': - resolution: {integrity: sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==} + '@rollup/rollup-freebsd-arm64@4.57.1': + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.57.0': - resolution: {integrity: sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==} + '@rollup/rollup-freebsd-x64@4.57.1': + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.57.0': - resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.57.0': - resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==} + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.57.0': - resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==} + '@rollup/rollup-linux-arm64-gnu@4.57.1': + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.57.0': - resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==} + '@rollup/rollup-linux-arm64-musl@4.57.1': + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.57.0': - resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==} + '@rollup/rollup-linux-loong64-gnu@4.57.1': + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.57.0': - resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==} + '@rollup/rollup-linux-loong64-musl@4.57.1': + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.57.0': - resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==} + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.57.0': - resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==} + '@rollup/rollup-linux-ppc64-musl@4.57.1': + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.57.0': - resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==} + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.57.0': - resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==} + '@rollup/rollup-linux-riscv64-musl@4.57.1': + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.57.0': - resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==} + '@rollup/rollup-linux-s390x-gnu@4.57.1': + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.57.0': - resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==} + '@rollup/rollup-linux-x64-gnu@4.57.1': + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.57.0': - resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==} + '@rollup/rollup-linux-x64-musl@4.57.1': + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.57.0': - resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==} + '@rollup/rollup-openbsd-x64@4.57.1': + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.57.0': - resolution: {integrity: sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==} + '@rollup/rollup-openharmony-arm64@4.57.1': + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.57.0': - resolution: {integrity: sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==} + '@rollup/rollup-win32-arm64-msvc@4.57.1': + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.57.0': - resolution: {integrity: sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==} + '@rollup/rollup-win32-ia32-msvc@4.57.1': + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.57.0': - resolution: {integrity: sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==} + '@rollup/rollup-win32-x64-gnu@4.57.1': + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.57.0': - resolution: {integrity: sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==} + '@rollup/rollup-win32-x64-msvc@4.57.1': + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} cpu: [x64] os: [win32] @@ -1374,8 +1374,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.279: - resolution: {integrity: sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==} + electron-to-chromium@1.5.283: + resolution: {integrity: sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2497,8 +2497,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.28.2: - resolution: {integrity: sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==} + preact@10.28.3: + resolution: {integrity: sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -2662,8 +2662,8 @@ packages: rollup: optional: true - rollup@4.57.0: - resolution: {integrity: sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==} + rollup@4.57.1: + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3136,25 +3136,25 @@ snapshots: '@alova/shared@1.3.2': {} - '@babel/code-frame@7.28.6': + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.6': {} + '@babel/compat-data@7.29.0': {} - '@babel/core@7.28.6': + '@babel/core@7.29.0': dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.28.6 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -3164,21 +3164,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.6': + '@babel/generator@7.29.0': dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.28.6 + '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.1 lru-cache: 5.1.1 @@ -3188,17 +3188,17 @@ snapshots: '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.6 + '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -3213,32 +3213,32 @@ snapshots: '@babel/helpers@7.28.6': dependencies: '@babel/template': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 - '@babel/parser@7.28.6': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.6 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.6)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.6 - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.28.6)': + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.6 + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) - '@babel/types': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -3246,23 +3246,23 @@ snapshots: '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 - '@babel/traverse@7.28.6': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.6': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 @@ -3625,18 +3625,18 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/compat@18.3.1(preact@10.28.2)': + '@preact/compat@18.3.1(preact@10.28.3)': dependencies: - preact: 10.28.2 + preact: 10.28.3 - '@preact/preset-vite@2.10.3(@babel/core@7.28.6)(preact@10.28.2)(rollup@4.57.0)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': + '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': dependencies: - '@babel/core': 7.28.6 - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.6) - '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) - '@rollup/pluginutils': 5.3.0(rollup@4.57.0) - babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.6) + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) + '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 picocolors: 1.1.1 vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) @@ -3648,20 +3648,20 @@ snapshots: '@prefresh/babel-plugin@0.5.2': {} - '@prefresh/core@1.5.9(preact@10.28.2)': + '@prefresh/core@1.5.9(preact@10.28.3)': dependencies: - preact: 10.28.2 + preact: 10.28.3 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': + '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': dependencies: - '@babel/core': 7.28.6 + '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.2 - '@prefresh/core': 1.5.9(preact@10.28.2) + '@prefresh/core': 1.5.9(preact@10.28.3) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 10.28.2 + preact: 10.28.3 vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) transitivePeerDependencies: - supports-color @@ -3671,87 +3671,87 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.3.0(rollup@4.57.0)': + '@rollup/pluginutils@5.3.0(rollup@4.57.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.57.0 + rollup: 4.57.1 - '@rollup/rollup-android-arm-eabi@4.57.0': + '@rollup/rollup-android-arm-eabi@4.57.1': optional: true - '@rollup/rollup-android-arm64@4.57.0': + '@rollup/rollup-android-arm64@4.57.1': optional: true - '@rollup/rollup-darwin-arm64@4.57.0': + '@rollup/rollup-darwin-arm64@4.57.1': optional: true - '@rollup/rollup-darwin-x64@4.57.0': + '@rollup/rollup-darwin-x64@4.57.1': optional: true - '@rollup/rollup-freebsd-arm64@4.57.0': + '@rollup/rollup-freebsd-arm64@4.57.1': optional: true - '@rollup/rollup-freebsd-x64@4.57.0': + '@rollup/rollup-freebsd-x64@4.57.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.57.0': + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.57.0': + '@rollup/rollup-linux-arm-musleabihf@4.57.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.57.0': + '@rollup/rollup-linux-arm64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.57.0': + '@rollup/rollup-linux-arm64-musl@4.57.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.57.0': + '@rollup/rollup-linux-loong64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-loong64-musl@4.57.0': + '@rollup/rollup-linux-loong64-musl@4.57.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.57.0': + '@rollup/rollup-linux-ppc64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-ppc64-musl@4.57.0': + '@rollup/rollup-linux-ppc64-musl@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.57.0': + '@rollup/rollup-linux-riscv64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.57.0': + '@rollup/rollup-linux-riscv64-musl@4.57.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.57.0': + '@rollup/rollup-linux-s390x-gnu@4.57.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.57.0': + '@rollup/rollup-linux-x64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-x64-musl@4.57.0': + '@rollup/rollup-linux-x64-musl@4.57.1': optional: true - '@rollup/rollup-openbsd-x64@4.57.0': + '@rollup/rollup-openbsd-x64@4.57.1': optional: true - '@rollup/rollup-openharmony-arm64@4.57.0': + '@rollup/rollup-openharmony-arm64@4.57.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.57.0': + '@rollup/rollup-win32-arm64-msvc@4.57.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.57.0': + '@rollup/rollup-win32-ia32-msvc@4.57.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.57.0': + '@rollup/rollup-win32-x64-gnu@4.57.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.57.0': + '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true '@sindresorhus/is@0.7.0': {} @@ -3767,10 +3767,10 @@ snapshots: '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: - '@babel/generator': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 + '@babel/generator': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 lodash-es: 4.17.23 minimatch: 9.0.5 @@ -4002,9 +4002,9 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.11 - babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.6): + babel-plugin-transform-hook-names@1.0.2(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.6 + '@babel/core': 7.29.0 balanced-match@1.0.2: {} @@ -4069,7 +4069,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.9.19 caniuse-lite: 1.0.30001766 - electron-to-chromium: 1.5.279 + electron-to-chromium: 1.5.283 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4414,7 +4414,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.279: {} + electron-to-chromium@1.5.283: {} emoji-regex@8.0.0: {} @@ -5460,7 +5460,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.28.6 + '@babel/code-frame': 7.29.0 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5525,7 +5525,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.28.2: {} + preact@10.28.3: {} prelude-ls@1.2.1: {} @@ -5666,44 +5666,44 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-visualizer@6.0.5(rollup@4.57.0): + rollup-plugin-visualizer@6.0.5(rollup@4.57.1): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 4.57.0 + rollup: 4.57.1 - rollup@4.57.0: + rollup@4.57.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.57.0 - '@rollup/rollup-android-arm64': 4.57.0 - '@rollup/rollup-darwin-arm64': 4.57.0 - '@rollup/rollup-darwin-x64': 4.57.0 - '@rollup/rollup-freebsd-arm64': 4.57.0 - '@rollup/rollup-freebsd-x64': 4.57.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.57.0 - '@rollup/rollup-linux-arm-musleabihf': 4.57.0 - '@rollup/rollup-linux-arm64-gnu': 4.57.0 - '@rollup/rollup-linux-arm64-musl': 4.57.0 - '@rollup/rollup-linux-loong64-gnu': 4.57.0 - '@rollup/rollup-linux-loong64-musl': 4.57.0 - '@rollup/rollup-linux-ppc64-gnu': 4.57.0 - '@rollup/rollup-linux-ppc64-musl': 4.57.0 - '@rollup/rollup-linux-riscv64-gnu': 4.57.0 - '@rollup/rollup-linux-riscv64-musl': 4.57.0 - '@rollup/rollup-linux-s390x-gnu': 4.57.0 - '@rollup/rollup-linux-x64-gnu': 4.57.0 - '@rollup/rollup-linux-x64-musl': 4.57.0 - '@rollup/rollup-openbsd-x64': 4.57.0 - '@rollup/rollup-openharmony-arm64': 4.57.0 - '@rollup/rollup-win32-arm64-msvc': 4.57.0 - '@rollup/rollup-win32-ia32-msvc': 4.57.0 - '@rollup/rollup-win32-x64-gnu': 4.57.0 - '@rollup/rollup-win32-x64-msvc': 4.57.0 + '@rollup/rollup-android-arm-eabi': 4.57.1 + '@rollup/rollup-android-arm64': 4.57.1 + '@rollup/rollup-darwin-arm64': 4.57.1 + '@rollup/rollup-darwin-x64': 4.57.1 + '@rollup/rollup-freebsd-arm64': 4.57.1 + '@rollup/rollup-freebsd-x64': 4.57.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1 + '@rollup/rollup-linux-arm64-gnu': 4.57.1 + '@rollup/rollup-linux-arm64-musl': 4.57.1 + '@rollup/rollup-linux-loong64-gnu': 4.57.1 + '@rollup/rollup-linux-loong64-musl': 4.57.1 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1 + '@rollup/rollup-linux-ppc64-musl': 4.57.1 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1 + '@rollup/rollup-linux-riscv64-musl': 4.57.1 + '@rollup/rollup-linux-s390x-gnu': 4.57.1 + '@rollup/rollup-linux-x64-gnu': 4.57.1 + '@rollup/rollup-linux-x64-musl': 4.57.1 + '@rollup/rollup-openbsd-x64': 4.57.1 + '@rollup/rollup-openharmony-arm64': 4.57.1 + '@rollup/rollup-win32-arm64-msvc': 4.57.1 + '@rollup/rollup-win32-ia32-msvc': 4.57.1 + '@rollup/rollup-win32-x64-gnu': 4.57.1 + '@rollup/rollup-win32-x64-msvc': 4.57.1 fsevents: 2.3.3 run-parallel@1.2.0: @@ -6073,7 +6073,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.57.0 + rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.1.0 diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index e717c29eb..fca4f0b02 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -26,12 +26,12 @@ importers: packages: - '@babel/code-frame@7.28.6': - resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.6': - resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + '@babel/generator@7.29.0': + resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.28.0': @@ -46,8 +46,8 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.6': - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true @@ -55,12 +55,12 @@ packages: resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.6': - resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.6': - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@jridgewell/gen-mapping@0.3.13': @@ -177,16 +177,16 @@ packages: snapshots: - '@babel/code-frame@7.28.6': + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/generator@7.28.6': + '@babel/generator@7.29.0': dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -197,29 +197,29 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.6': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 - '@babel/traverse@7.28.6': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.6': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 @@ -248,10 +248,10 @@ snapshots: '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: - '@babel/generator': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 + '@babel/generator': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 lodash-es: 4.17.23 minimatch: 9.0.5 From 6b87bbb882200df52b140b553c4bfd546c5f1be0 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 1 Feb 2026 12:02:40 +0100 Subject: [PATCH 038/162] set range for comfort point temp + offset - #2935 --- src/devices/thermostat.cpp | 57 ++++++++++++++++++-------------------- src/devices/thermostat.h | 4 +-- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index d8d702e3d..a9ab776ae 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -57,8 +57,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // RC10 if (model == EMSdevice::EMS_DEVICE_FLAG_RC10) { - monitor_typeids = {0xB1}; - set_typeids = {0xB0}; + monitor_typeids = {0xB1}; + set_typeids = {0xB0}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC10Monitor", false, MAKE_PF_CB(process_RC10Monitor)); @@ -67,10 +67,10 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // RC35 } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC35) || (model == EMSdevice::EMS_DEVICE_FLAG_RC30_N)) { - monitor_typeids = {0x3E, 0x48, 0x52, 0x5C}; - set_typeids = {0x3D, 0x47, 0x51, 0x5B}; - timer_typeids = {0x3F, 0x49, 0x53, 0x5D}; - timer2_typeids = {0x42, 0x4C, 0x56, 0x60}; + monitor_typeids = {0x3E, 0x48, 0x52, 0x5C}; + set_typeids = {0x3D, 0x47, 0x51, 0x5B}; + timer_typeids = {0x3F, 0x49, 0x53, 0x5D}; + timer2_typeids = {0x42, 0x4C, 0x56, 0x60}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC35Monitor", false, MAKE_PF_CB(process_RC35Monitor)); @@ -86,10 +86,10 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // RC20 } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC20) { if (device_id == 0x17) { // master - monitor_typeids = {0x91}; - set_typeids = {0xA8}; - curve_typeids = {0x90}; - timer_typeids = {0x8F}; + monitor_typeids = {0x91}; + set_typeids = {0xA8}; + curve_typeids = {0x90}; + timer_typeids = {0x8F}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor)); @@ -104,8 +104,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // RC20 newer } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model == EMSdevice::EMS_DEVICE_FLAG_RC25)) { if (device_id == 0x17) { // master - monitor_typeids = {0xAE}; - set_typeids = {0xAD}; + monitor_typeids = {0xAE}; + set_typeids = {0xAD}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor_2)); @@ -117,10 +117,10 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i } // RC30 } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC30) { - monitor_typeids = {0x41}; - set_typeids = {0xA7}; - curve_typeids = {0x40}; - timer_typeids = {0x3F}; + monitor_typeids = {0x41}; + set_typeids = {0xA7}; + curve_typeids = {0x40}; + timer_typeids = {0x3F}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { register_telegram_type(monitor_typeids[i], "RC30Monitor", false, MAKE_PF_CB(process_RC30Monitor)); @@ -163,12 +163,12 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set_typeids = {0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF, 0x02C0}; // 0x2CC is setting command to boiler, 0x2CD..0x2D4 is setting command to mixers, not a thermostat value, but also stored in thermostat // set2_typeids = {0x02CC, 0x02CE, 0x02D0, 0x02D2}; // max. 4 heating circuits supported ny RC310 - set2_typeids = {0x0421, 0x0422, 0x0423, 0x0424}; - summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6}; - curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x02A0, 0x02A1, 0x02A2}; - summer2_typeids = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; - hp_typeids = {0x0467, 0x0468, 0x0469, 0x046A}; - hpmode_typeids = {0x0291, 0x0292, 0x0293, 0x0294}; + set2_typeids = {0x0421, 0x0422, 0x0423, 0x0424}; + summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6}; + curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x02A0, 0x02A1, 0x02A2}; + summer2_typeids = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; + hp_typeids = {0x0467, 0x0468, 0x0469, 0x046A}; + hpmode_typeids = {0x0291, 0x0292, 0x0293, 0x0294}; const size_t monitor_size = monitor_typeids.size(); for (uint8_t i = 0; i < monitor_size; i++) { register_telegram_type(monitor_typeids[i], "RC300Monitor", false, MAKE_PF_CB(process_RC300Monitor)); @@ -217,7 +217,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // return; // no values to add } - monitor_typeids = {0x016F, 0x0170, 0x0171, 0x0172}; + monitor_typeids = {0x016F, 0x0170, 0x0171, 0x0172}; const size_t junkers_size = monitor_typeids.size(); for (uint8_t i = 0; i < junkers_size; i++) { register_telegram_type(monitor_typeids[i], "JunkersMonitor", false, MAKE_PF_CB(process_JunkersMonitor)); @@ -4929,13 +4929,10 @@ void Thermostat::register_device_values_hc(std::shared_ptrcooltemp, DeviceValueType::INT8, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(cooltemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_cooltemp), -1, 30); register_device_value(tag, &hc->fastHeatup, DeviceValueType::UINT8, FL_(fastheatup), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_fastheatup)); - register_device_value(tag, - &hc->comfortPointOffset, - DeviceValueType::UINT8, - FL_(comfortPointOffset), - DeviceValueUOM::DEGREES_R, - MAKE_CF_CB(set_comfortPointOffset)); - register_device_value(tag, &hc->comfortPointTemp, DeviceValueType::UINT8, FL_(comfortPointTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_comfortPointTemp)); + register_device_value( + tag, &hc->comfortPointOffset, DeviceValueType::UINT8, FL_(comfortPointOffset), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_comfortPointOffset), 0, 10); + register_device_value( + tag, &hc->comfortPointTemp, DeviceValueType::INT8, FL_(comfortPointTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_comfortPointTemp), -5, 15); register_device_value(tag, &hc->switchonoptimization, DeviceValueType::BOOL, diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index d6b6938c1..bd5ad579a 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -90,8 +90,8 @@ class Thermostat : public EMSdevice { uint8_t switchProgMode; int8_t redThreshold; // BC400 - uint8_t comfortPointTemp; - uint8_t comfortPointOffset; + int8_t comfortPointTemp; // -5-15° C - in BC400 + uint8_t comfortPointOffset; // 0-10° K - in BC400 // RC 10 uint8_t reducehours; // night reduce duration uint16_t reduceminutes; // remaining minutes to night->day From 95168cf514d2d5d4faf965a0b52fa452f406df86 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 1 Feb 2026 12:57:10 +0100 Subject: [PATCH 039/162] Add DeepWiki badge to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a4d80ad0f..7b2a8b41f 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ [![Codacy Badge](https://app.codacy.com/project/badge/Grade/9441142f49424ef891e8f5251866ee6b)](https://app.codacy.com/gh/emsesp/EMS-ESP32/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![downloads](https://img.shields.io/github/downloads/emsesp/EMS-ESP32/total.svg)](https://github.com/emsesp/EMS-ESP32/releases) [![chat](https://img.shields.io/discord/816637840644505620.svg?style=flat-square&color=blueviolet)](https://discord.gg/GP9DPSgeJq) +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/emsesp/EMS-ESP32) [![GitHub stars](https://img.shields.io/github/stars/emsesp/EMS-ESP32.svg?style=social&label=Star)](https://github.com/emsesp/EMS-ESP32/stargazers) [![GitHub forks](https://img.shields.io/github/forks/emsesp/EMS-ESP32.svg?style=social&label=Fork)](https://github.com/emsesp/EMS-ESP32/network) From f7f078d82a9548568f833948df13d2cf303dff63 Mon Sep 17 00:00:00 2001 From: misa1515 <61636045+misa1515@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:15:09 +0100 Subject: [PATCH 040/162] Update locale_translations.h --- src/core/locale_translations.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index 319fcda82..c7fee26d3 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -754,8 +754,8 @@ MAKE_TRANSLATION(roomTemp, "currtemp", "current room temperature", "aktuelle Rau MAKE_TRANSLATION(mode, "mode", "operating mode", "Betriebsart", "Modus", "Läge", "sposób sterowania", "modus", "mode", "mod", "modalità", "režim", "provozní režim") MAKE_TRANSLATION(modetype, "modetype", "mode type", "Modustyp", "Type modus", "Typ av läge", "aktualny tryb pracy", "modusrype", "type mode", "mod tipi", "tipo di modalita", "typ režimu", "typ režimu") MAKE_TRANSLATION(fastheatup, "fastheatup", "fast heatup", "schnelles Aufheizen", "Snel opwarmen", "Snabb Uppvärmning", "szybkie nagrzewanie", "rask oppvarming", "chauffage rapide", "hızlı ısıtma", "riscaldamento rapido", "rýchle zahriatie", "rychlé předehřátí") -MAKE_TRANSLATION(comfortPointTemp, "comftemp", "comfort point temperature", "Komfortpunkt Temperatur", "", "", "", "", "", "", "", "", "") -MAKE_TRANSLATION(comfortPointOffset, "comfoffset", "comfort point offset", "Komfortpunkt Anhebung", "", "", "", "", "", "", "", "", "") +MAKE_TRANSLATION(comfortPointTemp, "comftemp", "comfort point temperature", "Komfortpunkt Temperatur", "", "", "", "", "", "", "", "teplota bodu komfortu", "") +MAKE_TRANSLATION(comfortPointOffset, "comfoffset", "comfort point offset", "Komfortpunkt Anhebung", "", "", "", "", "", "", "", "posun bodu komfortu", "") MAKE_TRANSLATION(heatup, "heatup", "heatup", "Aufheizen", "opwarmen", "Uppvärmning", "nagrzewanie", "oppvarming", "chauffage", "hızlı", "riscaldamento", "rýchle zahriatie", "předehřev") MAKE_TRANSLATION(daytemp, "daytemp", "day temperature", "Tagestemperatur", "temperatuur dag", "Dagstemperatur", "temperatura w dzień", "dagtemperatur", "température jour", "gündüz sıcaklığı", "temperatura giornaliera", "denná teplota", "denní teplota") MAKE_TRANSLATION(daylowtemp, "daytemp2", "day temperature T2", "Tagestemperatur T2", "Temperatuur dag T2", "Dagstemperatur T2", "temperatura w dzień T2", "dagtemperatur T2", "température jour T2", "gündüz sıcaklığı T2", "temperatura giornaliera T2", "denná teplota T2", "denní teplota T2") From be82afd77818e09f5384dad8243a7a04fd6e90e4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 2 Feb 2026 18:52:21 +0100 Subject: [PATCH 041/162] add translated heat/eco modes to `mode_str_tpl` --- src/core/mqtt.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp index ea1e58f42..d559efcac 100644 --- a/src/core/mqtt.cpp +++ b/src/core/mqtt.cpp @@ -1377,15 +1377,20 @@ bool Mqtt::publish_ha_climate_config(const DeviceValue & dv, const bool has_room snprintf(mode_str_tpl, sizeof(mode_str_tpl), - "{%%if %s%%}off{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}off{%%elif %s=='%s'%%}off{%%else%%}auto{%%endif%%}", + "{%%if %s%%}off{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}off{%%elif %s=='%s'%%}off{%%elif " + "%s=='%s'%%}off{%%else%%}auto{%%endif%%}", hc_mode_cond, hc_mode_s, Helpers::translated_word(FL_(manual)), hc_mode_s, Helpers::translated_word(FL_(day)), hc_mode_s, + Helpers::translated_word(FL_(heat)), + hc_mode_s, Helpers::translated_word(FL_(night)), hc_mode_s, + Helpers::translated_word(FL_(eco)), + hc_mode_s, Helpers::translated_word(FL_(off))); snprintf(name_s, sizeof(name_s), "%s%d", tagname, hc_num); From f83404c2161a3984cd859109c41b7301a7d5559e Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 8 Feb 2026 13:53:32 +0100 Subject: [PATCH 042/162] add custom entity type NVS --- interface/src/app/main/CustomEntities.tsx | 14 ++++--- .../src/app/main/CustomEntitiesDialog.tsx | 3 +- src/web/WebCustomEntityService.cpp | 37 +++++++++++++++---- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/interface/src/app/main/CustomEntities.tsx b/interface/src/app/main/CustomEntities.tsx index a928d8181..59fc4f204 100644 --- a/interface/src/app/main/CustomEntities.tsx +++ b/interface/src/app/main/CustomEntities.tsx @@ -310,13 +310,15 @@ const CustomEntities = () => { /> )} + {ei.ram > 0 ? '' : showHex(ei.device_id as number, 2)} + {ei.ram > 0 ? '' : showHex(ei.type_id as number, 3)} + {ei.ram > 0 ? '' : ei.offset} - {ei.ram === 1 ? '' : showHex(ei.device_id as number, 2)} - - {ei.ram === 1 ? '' : showHex(ei.type_id as number, 3)} - {ei.ram === 1 ? '' : ei.offset} - - {ei.ram === 1 ? 'RAM' : DeviceValueTypeNames[ei.value_type]} + {ei.ram === 1 + ? 'RAM' + : ei.ram === 2 + ? 'NVS' + : DeviceValueTypeNames[ei.value_type]} {formatValue(ei.value, ei.uom)} diff --git a/interface/src/app/main/CustomEntitiesDialog.tsx b/interface/src/app/main/CustomEntitiesDialog.tsx index 3041f0bba..1ec409d6e 100644 --- a/interface/src/app/main/CustomEntitiesDialog.tsx +++ b/interface/src/app/main/CustomEntitiesDialog.tsx @@ -205,9 +205,10 @@ const CustomEntitiesDialog = ({ > EMS-{LL.VALUE(1)} RAM-{LL.VALUE(1)} + NVS-{LL.VALUE(1)} - {editItem.ram === 1 && ( + {editItem.ram > 0 && ( <> (); + entityItem.data = ei["value"].as().c_str(); strlcpy(entityItem.name, ei["name"].as(), sizeof(entityItem.name)); - if (entityItem.ram == 1) { + if (entityItem.ram > 0) { entityItem.device_id = 0; entityItem.type_id = 0; entityItem.value_type = DeviceValueType::STRING; @@ -127,7 +132,15 @@ StateUpdateResult WebCustomEntity::update(JsonObject root, WebCustomEntity & web if (entityItem.factor == 0) { entityItem.factor = 1; } - + if (entityItem.ram == 2) { // NVS + char key[sizeof(entityItem.name) + 2]; + snprintf(key, sizeof(key), "c:%s", entityItem.name); + if (EMSESP::nvs_.isKey(key)) { + entityItem.data = EMSESP::nvs_.getString(key).c_str(); + } else { + EMSESP::nvs_.putString(key, entityItem.data.c_str()); + } + } webCustomEntity.customEntityItems.push_back(entityItem); // add to list if (entityItem.writeable && entityItem.name[0] != '\0') { @@ -163,6 +176,13 @@ bool WebCustomEntityService::command_setvalue(const char * value, const int8_t i if (Helpers::toLower(entityItem.name) == Helpers::toLower(name)) { if (entityItem.ram == 1) { entityItem.data = value; + } else if (entityItem.ram == 2) { // NVS + entityItem.data = value; + char key[sizeof(entityItem.name) + 2]; + snprintf(key, sizeof(key), "c:%s", entityItem.name); + if (EMSESP::nvs_.getString(key) != entityItem.data.c_str()) { + EMSESP::nvs_.putString(key, entityItem.data.c_str()); + } } else if (entityItem.value_type == DeviceValueType::STRING) { auto telegram = strdup(value); uint8_t length = strlen(telegram) / 3 + 1; @@ -335,10 +355,13 @@ bool WebCustomEntityService::get_value_info(JsonObject output, const char * cmd) // build the json for specific entity void WebCustomEntityService::get_value_json(JsonObject output, CustomEntityItem const & entity) { - output["name"] = (const char *)entity.name; - output["fullname"] = (const char *)entity.name; - output["storage"] = entity.ram ? "ram" : "ems"; - output["type"] = entity.value_type == DeviceValueType::BOOL ? "boolean" : entity.value_type == DeviceValueType::STRING ? "string" : F_(number); + output["name"] = (const char *)entity.name; + output["fullname"] = (const char *)entity.name; + output["storage"] = entity.ram == 1 ? "ram" : entity.ram == 2 ? "nvs" : "ems"; + output["type"] = entity.value_type == DeviceValueType::BOOL ? "boolean" : entity.value_type == DeviceValueType::STRING ? "string" : F_(number); + if (entity.uom) { + output["uom"] = EMSdevice::uom_to_string(entity.uom); + } output["readable"] = true; output["writeable"] = entity.writeable; output["visible"] = true; From 769beeda37b2a7f521da8605faa622ae65ed0e62 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 8 Feb 2026 13:53:57 +0100 Subject: [PATCH 043/162] save scheduler active flag to nvs --- src/web/WebSchedulerService.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index 70da3063f..b92930357 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -73,6 +73,11 @@ void WebScheduler::read(WebScheduler & webScheduler, JsonObject root) { StateUpdateResult WebScheduler::update(JsonObject root, WebScheduler & webScheduler) { // reset the list Command::erase_device_commands(EMSdevice::DeviceType::SCHEDULER); + for (ScheduleItem & scheduleItem : webScheduler.scheduleItems) { + char key[sizeof(scheduleItem.name) + 2]; + snprintf(key, sizeof(key), "s:%s", scheduleItem.name); + EMSESP::nvs_.remove(key); + } webScheduler.scheduleItems.clear(); EMSESP::webSchedulerService.ha_reset(); @@ -95,6 +100,11 @@ StateUpdateResult WebScheduler::update(JsonObject root, WebScheduler & webSchedu webScheduler.scheduleItems.push_back(si); // add to list if (webScheduler.scheduleItems.back().name[0] != '\0') { + char key[sizeof(webScheduler.scheduleItems.back().name) + 2]; + snprintf(key, sizeof(key), "s:%s", webScheduler.scheduleItems.back().name); + if (EMSESP::nvs_.isKey(key)) { + webScheduler.scheduleItems.back().active = EMSESP::nvs_.getBool(key); + } Command::add( EMSdevice::DeviceType::SCHEDULER, webScheduler.scheduleItems.back().name, @@ -127,7 +137,21 @@ bool WebSchedulerService::command_setvalue(const char * value, const int8_t id, if (EMSESP::mqtt_.get_publish_onchange(0)) { publish(); } - + // save new state to nvs #2946 + char key[sizeof(scheduleItem.name) + 2]; + snprintf(key, sizeof(key), "s:%s", scheduleItem.name); + EMSESP::nvs_.putBool(key, scheduleItem.active); + /* save to filesystem + EMSESP::webSchedulerService.update([&](WebScheduler & webSchedule) { + for (auto si : webSchedule.scheduleItems) { + if (!strcmp(si.name, scheduleItem.name)) { + si.active = scheduleItem.active; + break; + } + } + return StateUpdateResult::CHANGED; + }); + */ return true; } } @@ -260,8 +284,8 @@ void WebSchedulerService::publish(const bool force) { char uniq_s[70]; snprintf(uniq_s, sizeof(uniq_s), "%s_%s", F_(scheduler), scheduleItem.name); - config["uniq_id"] = uniq_s; - config["name"] = (const char *)scheduleItem.name; + config["uniq_id"] = uniq_s; + config["name"] = (const char *)scheduleItem.name; // Optimized: use stack buffer instead of string concatenation char def_ent_id[80]; snprintf(def_ent_id, sizeof(def_ent_id), "switch.%s", uniq_s); From 3ef279ea10b494434dcdb279a1162c60e9a948fe Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 8 Feb 2026 13:59:57 +0100 Subject: [PATCH 044/162] 3.8.2-dev.3, changelog, update pkg --- CHANGELOG_LATEST.md | 2 + interface/package.json | 12 +- interface/pnpm-lock.yaml | 668 +++++++++++++++++------------------ lib_standalone/Preferences.h | 4 +- src/emsesp_version.h | 2 +- 5 files changed, 330 insertions(+), 358 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index da281397c..94ea9c546 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -17,3 +17,5 @@ For more details go to [emsesp.org](https://emsesp.org/). - weblogbuffer up to 1000 messages with PSRAM, mentioned in [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) - validate custom entity writes, [#2931](https://github.com/emsesp/EMS-ESP32/issues/2931) - remove wrong burnMinPower [#2918](https://github.com/emsesp/EMS-ESP32/issues/2918) +- store scheduler active state to nvs [#2946](https://github.com/emsesp/EMS-ESP32/discussions/2946) +- translated modes `heat` and `eco` for HA-climate mode-str-tpl diff --git a/interface/package.json b/interface/package.json index e9445eed1..de9d51290 100644 --- a/interface/package.json +++ b/interface/package.json @@ -48,16 +48,16 @@ }, "devDependencies": { "@babel/core": "^7.29.0", - "@eslint/js": "^9.39.2", + "@eslint/js": "^10.0.1", "@preact/compat": "^18.3.1", "@preact/preset-vite": "^2.10.3", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.1.0", - "@types/react": "^19.2.10", + "@types/node": "^25.2.2", + "@types/react": "^19.2.13", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", "concurrently": "^9.2.1", - "eslint": "^9.39.2", + "eslint": "^10.0.0", "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.1", "rollup-plugin-visualizer": "^6.0.5", @@ -65,7 +65,7 @@ "typescript-eslint": "^8.54.0", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", - "vite-tsconfig-paths": "^6.0.5" + "vite-tsconfig-paths": "^6.1.0" }, - "packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264" + "packageManager": "pnpm@10.29.1" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index ec6bacc82..993277ad1 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -13,22 +13,22 @@ importers: version: 2.3.1(alova@3.5.0) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.2.10)(react@19.2.4) + version: 11.14.0(@types/react@19.2.13)(react@19.2.4) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) '@mui/icons-material': specifier: ^7.3.7 - version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) + version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) '@mui/material': specifier: ^7.3.7 - version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@preact/compat': specifier: ^18.3.1 version: 18.3.1(preact@10.28.3) '@table-library/react-table-library': specifier: 4.1.15 - version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) alova: specifier: 3.5.0 version: 3.5.0 @@ -79,23 +79,23 @@ importers: specifier: ^7.29.0 version: 7.29.0 '@eslint/js': - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.0.0) '@preact/preset-vite': specifier: ^2.10.3 - version: 2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + version: 2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) '@types/node': - specifier: ^25.1.0 - version: 25.1.0 + specifier: ^25.2.2 + version: 25.2.2 '@types/react': - specifier: ^19.2.10 - version: 19.2.10 + specifier: ^19.2.13 + version: 19.2.13 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.10) + version: 19.2.3(@types/react@19.2.13) axe-core: specifier: ^4.11.1 version: 4.11.1 @@ -103,11 +103,11 @@ importers: specifier: ^9.2.1 version: 9.2.1 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^10.0.0 + version: 10.0.0 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.2) + version: 10.1.8(eslint@10.0.0) prettier: specifier: ^3.8.1 version: 3.8.1 @@ -119,16 +119,16 @@ importers: version: 5.46.0 typescript-eslint: specifier: ^8.54.0 - version: 8.54.0(eslint@9.39.2)(typescript@5.9.3) + version: 8.54.0(eslint@10.0.0)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.1.0)(terser@5.46.0) + version: 7.3.1(@types/node@25.2.2)(terser@5.46.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + version: 0.6.1(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) vite-tsconfig-paths: - specifier: ^6.0.5 - version: 6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + specifier: ^6.1.0 + version: 6.1.0(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) packages: @@ -152,8 +152,8 @@ packages: resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.0': - resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -291,68 +291,68 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -363,92 +363,92 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.2': - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -463,33 +463,34 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.1': + resolution: {integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.5.2': + resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.1.0': + resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true - '@eslint/js@9.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.1': + resolution: {integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.6.0': + resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -511,8 +512,8 @@ packages: resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + '@isaacs/brace-expansion@5.0.1': + resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} engines: {node: 20 || >=22} '@jridgewell/gen-mapping@0.3.13': @@ -860,6 +861,9 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -897,8 +901,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.1.0': - resolution: {integrity: sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA==} + '@types/node@25.2.2': + resolution: {integrity: sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -916,8 +920,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.2.10': - resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==} + '@types/react@19.2.13': + resolution: {integrity: sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -1024,9 +1028,6 @@ packages: resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} engines: {node: '>=4'} - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} @@ -1154,8 +1155,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001766: - resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1374,8 +1375,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.283: - resolution: {integrity: sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==} + electron-to-chromium@1.5.286: + resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1530,8 +1531,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} engines: {node: '>=18'} hasBin: true @@ -1553,9 +1554,9 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.0: + resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} @@ -1565,9 +1566,13 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.0: + resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.0.0: + resolution: {integrity: sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -1575,9 +1580,9 @@ packages: jiti: optional: true - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.1.0: + resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} @@ -1824,11 +1829,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globby@10.0.2: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} @@ -2092,10 +2093,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -2159,9 +2156,6 @@ packages: lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - logalot@2.1.0: resolution: {integrity: sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==} engines: {node: '>=0.10.0'} @@ -2253,8 +2247,8 @@ packages: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + minimatch@10.1.2: + resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -2702,8 +2696,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true @@ -2838,10 +2832,6 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - strip-outer@1.0.1: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} @@ -3025,8 +3015,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x - vite-tsconfig-paths@6.0.5: - resolution: {integrity: sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig==} + vite-tsconfig-paths@6.1.0: + resolution: {integrity: sha512-kpd3sY9glHIDaq4V/Tlc1Y8WaKtutoc3B525GHxEVKWX42FKfQsXvjFOemu1I8VIN8pNbrMLWVTbW79JaRUxKg==} peerDependencies: vite: '*' @@ -3147,7 +3137,7 @@ snapshots: '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.28.6 @@ -3164,7 +3154,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.0': + '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 @@ -3253,7 +3243,7 @@ snapshots: '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.29.0 '@babel/template': 7.28.6 @@ -3299,7 +3289,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4)': + '@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 @@ -3311,7 +3301,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.2.4 optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 transitivePeerDependencies: - supports-color @@ -3325,18 +3315,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) '@emotion/utils': 1.4.2 react: 19.2.4 optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 transitivePeerDependencies: - supports-color @@ -3350,131 +3340,119 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.27.2': + '@esbuild/aix-ppc64@0.27.3': optional: true - '@esbuild/android-arm64@0.27.2': + '@esbuild/android-arm64@0.27.3': optional: true - '@esbuild/android-arm@0.27.2': + '@esbuild/android-arm@0.27.3': optional: true - '@esbuild/android-x64@0.27.2': + '@esbuild/android-x64@0.27.3': optional: true - '@esbuild/darwin-arm64@0.27.2': + '@esbuild/darwin-arm64@0.27.3': optional: true - '@esbuild/darwin-x64@0.27.2': + '@esbuild/darwin-x64@0.27.3': optional: true - '@esbuild/freebsd-arm64@0.27.2': + '@esbuild/freebsd-arm64@0.27.3': optional: true - '@esbuild/freebsd-x64@0.27.2': + '@esbuild/freebsd-x64@0.27.3': optional: true - '@esbuild/linux-arm64@0.27.2': + '@esbuild/linux-arm64@0.27.3': optional: true - '@esbuild/linux-arm@0.27.2': + '@esbuild/linux-arm@0.27.3': optional: true - '@esbuild/linux-ia32@0.27.2': + '@esbuild/linux-ia32@0.27.3': optional: true '@esbuild/linux-loong64@0.14.54': optional: true - '@esbuild/linux-loong64@0.27.2': + '@esbuild/linux-loong64@0.27.3': optional: true - '@esbuild/linux-mips64el@0.27.2': + '@esbuild/linux-mips64el@0.27.3': optional: true - '@esbuild/linux-ppc64@0.27.2': + '@esbuild/linux-ppc64@0.27.3': optional: true - '@esbuild/linux-riscv64@0.27.2': + '@esbuild/linux-riscv64@0.27.3': optional: true - '@esbuild/linux-s390x@0.27.2': + '@esbuild/linux-s390x@0.27.3': optional: true - '@esbuild/linux-x64@0.27.2': + '@esbuild/linux-x64@0.27.3': optional: true - '@esbuild/netbsd-arm64@0.27.2': + '@esbuild/netbsd-arm64@0.27.3': optional: true - '@esbuild/netbsd-x64@0.27.2': + '@esbuild/netbsd-x64@0.27.3': optional: true - '@esbuild/openbsd-arm64@0.27.2': + '@esbuild/openbsd-arm64@0.27.3': optional: true - '@esbuild/openbsd-x64@0.27.2': + '@esbuild/openbsd-x64@0.27.3': optional: true - '@esbuild/openharmony-arm64@0.27.2': + '@esbuild/openharmony-arm64@0.27.3': optional: true - '@esbuild/sunos-x64@0.27.2': + '@esbuild/sunos-x64@0.27.3': optional: true - '@esbuild/win32-arm64@0.27.2': + '@esbuild/win32-arm64@0.27.3': optional: true - '@esbuild/win32-ia32@0.27.2': + '@esbuild/win32-ia32@0.27.3': optional: true - '@esbuild/win32-x64@0.27.2': + '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0)': dependencies: - eslint: 9.39.2 + eslint: 10.0.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint/config-array@0.23.1': dependencies: - '@eslint/object-schema': 2.1.7 + '@eslint/object-schema': 3.0.1 debug: 4.4.3 - minimatch: 3.1.2 + minimatch: 10.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + '@eslint/config-helpers@0.5.2': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 - '@eslint/core@0.17.0': + '@eslint/core@1.1.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.3': + '@eslint/js@10.0.1(eslint@10.0.0)': + optionalDependencies: + eslint: 10.0.0 + + '@eslint/object-schema@3.0.1': {} + + '@eslint/plugin-kit@0.6.0': dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.2': {} - - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': - dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -3490,7 +3468,7 @@ snapshots: '@isaacs/balanced-match@4.0.1': {} - '@isaacs/brace-expansion@5.0.0': + '@isaacs/brace-expansion@5.0.1': dependencies: '@isaacs/balanced-match': 4.0.1 @@ -3520,23 +3498,23 @@ snapshots: '@mui/core-downloads-tracker@7.3.7': {} - '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.10)(react@19.2.4)': + '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 - '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@mui/core-downloads-tracker': 7.3.7 - '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) - '@mui/types': 7.4.10(@types/react@19.2.10) - '@mui/utils': 7.3.7(@types/react@19.2.10)(react@19.2.4) + '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) + '@mui/types': 7.4.10(@types/react@19.2.13) + '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.2.10) + '@types/react-transition-group': 4.4.12(@types/react@19.2.13) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 @@ -3545,20 +3523,20 @@ snapshots: react-is: 19.2.4 react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) - '@types/react': 19.2.10 + '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) + '@types/react': 19.2.13 - '@mui/private-theming@7.3.7(@types/react@19.2.10)(react@19.2.4)': + '@mui/private-theming@7.3.7(@types/react@19.2.13)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/utils': 7.3.7(@types/react@19.2.10)(react@19.2.4) + '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4) prop-types: 15.8.1 react: 19.2.4 optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 - '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(react@19.2.4)': + '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/cache': 11.14.0 @@ -3568,42 +3546,42 @@ snapshots: prop-types: 15.8.1 react: 19.2.4 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) - '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4)': + '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/private-theming': 7.3.7(@types/react@19.2.10)(react@19.2.4) - '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4))(react@19.2.4) - '@mui/types': 7.4.10(@types/react@19.2.10) - '@mui/utils': 7.3.7(@types/react@19.2.10)(react@19.2.4) + '@mui/private-theming': 7.3.7(@types/react@19.2.13)(react@19.2.4) + '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(react@19.2.4) + '@mui/types': 7.4.10(@types/react@19.2.13) + '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 react: 19.2.4 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(@types/react@19.2.10)(react@19.2.4) - '@types/react': 19.2.10 + '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) + '@types/react': 19.2.13 - '@mui/types@7.4.10(@types/react@19.2.10)': + '@mui/types@7.4.10(@types/react@19.2.13)': dependencies: '@babel/runtime': 7.28.6 optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 - '@mui/utils@7.3.7(@types/react@19.2.10)(react@19.2.4)': + '@mui/utils@7.3.7(@types/react@19.2.13)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/types': 7.4.10(@types/react@19.2.10) + '@mui/types': 7.4.10(@types/react@19.2.13) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 19.2.4 react-is: 19.2.4 optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 '@noble/hashes@1.8.0': {} @@ -3629,18 +3607,18 @@ snapshots: dependencies: preact: 10.28.3 - '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': + '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)) + vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) transitivePeerDependencies: - preact - rollup @@ -3654,7 +3632,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0))': + '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.2 @@ -3662,7 +3640,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.28.3 - vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) transitivePeerDependencies: - supports-color @@ -3756,9 +3734,9 @@ snapshots: '@sindresorhus/is@0.7.0': {} - '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.10)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@emotion/react': 11.14.0(@types/react@19.2.10)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) clsx: 1.1.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -3767,7 +3745,7 @@ snapshots: '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: - '@babel/generator': 7.29.0 + '@babel/generator': 7.29.1 '@babel/parser': 7.29.0 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -3781,12 +3759,14 @@ snapshots: '@trysound/sax@0.2.0': {} + '@types/esrecurse@4.3.1': {} + '@types/estree@1.0.8': {} '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.1.0 + '@types/node': 25.2.2 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3815,19 +3795,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.1.0 + '@types/node': 25.2.2 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.1.0 + '@types/node': 25.2.2 '@types/minimatch@6.0.0': dependencies: - minimatch: 10.1.1 + minimatch: 10.1.2 - '@types/node@25.1.0': + '@types/node@25.2.2': dependencies: undici-types: 7.16.0 @@ -3835,35 +3815,35 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@19.2.3(@types/react@19.2.10)': + '@types/react-dom@19.2.3(@types/react@19.2.13)': dependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 - '@types/react-transition-group@4.4.12(@types/react@19.2.10)': + '@types/react-transition-group@4.4.12(@types/react@19.2.13)': dependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.13 - '@types/react@19.2.10': + '@types/react@19.2.13': dependencies: csstype: 3.2.3 '@types/responselike@1.0.3': dependencies: - '@types/node': 25.1.0 + '@types/node': 25.2.2 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.1.0 + '@types/node': 25.2.2 - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@10.0.0)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 9.39.2 + eslint: 10.0.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3871,14 +3851,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.54.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.54.0 '@typescript-eslint/types': 8.54.0 '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 - eslint: 9.39.2 + eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3901,13 +3881,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.54.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2 + eslint: 10.0.0 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -3923,20 +3903,20 @@ snapshots: '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.54.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) '@typescript-eslint/scope-manager': 8.54.0 '@typescript-eslint/types': 8.54.0 '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - eslint: 9.39.2 + eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3980,8 +3960,6 @@ snapshots: dependencies: file-type: 4.4.0 - argparse@2.0.1: {} - array-find-index@1.0.2: {} array-union@2.1.0: {} @@ -4068,8 +4046,8 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001766 - electron-to-chromium: 1.5.283 + caniuse-lite: 1.0.30001769 + electron-to-chromium: 1.5.286 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4127,7 +4105,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001766: {} + caniuse-lite@1.0.30001769: {} caw@2.0.1: dependencies: @@ -4414,7 +4392,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.283: {} + electron-to-chromium@1.5.286: {} emoji-regex@8.0.0: {} @@ -4522,34 +4500,34 @@ snapshots: esbuild-windows-64: 0.14.54 esbuild-windows-arm64: 0.14.54 - esbuild@0.27.2: + esbuild@0.27.3: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-arm': 0.27.2 - '@esbuild/android-arm64': 0.27.2 - '@esbuild/android-x64': 0.27.2 - '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/darwin-x64': 0.27.2 - '@esbuild/freebsd-arm64': 0.27.2 - '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm': 0.27.2 - '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-ia32': 0.27.2 - '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-mips64el': 0.27.2 - '@esbuild/linux-ppc64': 0.27.2 - '@esbuild/linux-riscv64': 0.27.2 - '@esbuild/linux-s390x': 0.27.2 - '@esbuild/linux-x64': 0.27.2 - '@esbuild/netbsd-arm64': 0.27.2 - '@esbuild/netbsd-x64': 0.27.2 - '@esbuild/openbsd-arm64': 0.27.2 - '@esbuild/openbsd-x64': 0.27.2 - '@esbuild/openharmony-arm64': 0.27.2 - '@esbuild/sunos-x64': 0.27.2 - '@esbuild/win32-arm64': 0.27.2 - '@esbuild/win32-ia32': 0.27.2 - '@esbuild/win32-x64': 0.27.2 + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 escalade@3.2.0: {} @@ -4557,12 +4535,14 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.39.2): + eslint-config-prettier@10.1.8(eslint@10.0.0): dependencies: - eslint: 9.39.2 + eslint: 10.0.0 - eslint-scope@8.4.0: + eslint-scope@9.1.0: dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -4570,28 +4550,27 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2: + eslint-visitor-keys@5.0.0: {} + + eslint@10.0.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 + '@eslint/config-array': 0.23.1 + '@eslint/config-helpers': 0.5.2 + '@eslint/core': 1.1.0 + '@eslint/plugin-kit': 0.6.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.12.6 - chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-scope: 9.1.0 + eslint-visitor-keys: 5.0.0 + espree: 11.1.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4602,18 +4581,17 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 10.1.2 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: - supports-color - espree@10.4.0: + espree@11.1.0: dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 + eslint-visitor-keys: 5.0.0 esquery@1.7.0: dependencies: @@ -4883,8 +4861,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@14.0.0: {} - globby@10.0.2: dependencies: '@types/glob': 7.2.0 @@ -5155,10 +5131,6 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - jsesc@3.1.0: {} json-buffer@3.0.0: {} @@ -5214,8 +5186,6 @@ snapshots: lodash-es@4.17.23: {} - lodash.merge@4.6.2: {} - logalot@2.1.0: dependencies: figures: 1.7.0 @@ -5304,9 +5274,9 @@ snapshots: mimic-response@1.0.1: {} - minimatch@10.1.1: + minimatch@10.1.2: dependencies: - '@isaacs/brace-expansion': 5.0.0 + '@isaacs/brace-expansion': 5.0.1 minimatch@3.1.2: dependencies: @@ -5734,7 +5704,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.3: {} + semver@7.7.4: {} set-cookie-parser@2.7.2: {} @@ -5854,8 +5824,6 @@ snapshots: dependencies: get-stdin: 4.0.1 - strip-json-comments@3.1.1: {} - strip-outer@1.0.1: dependencies: escape-string-regexp: 1.0.5 @@ -5967,13 +5935,13 @@ snapshots: dependencies: typescript: 5.9.3 - typescript-eslint@8.54.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.54.0(eslint@10.0.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@10.0.0)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) + eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6018,7 +5986,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6043,11 +6011,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6055,28 +6023,28 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) - vite-tsconfig-paths@6.0.5(typescript@5.9.3)(vite@7.3.1(@types/node@25.1.0)(terser@5.46.0)): + vite-tsconfig-paths@6.1.0(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.1.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.1.0)(terser@5.46.0): + vite@7.3.1(@types/node@25.2.2)(terser@5.46.0): dependencies: - esbuild: 0.27.2 + esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.1.0 + '@types/node': 25.2.2 fsevents: 2.3.3 terser: 5.46.0 diff --git a/lib_standalone/Preferences.h b/lib_standalone/Preferences.h index 07f24e8be..c994294cf 100644 --- a/lib_standalone/Preferences.h +++ b/lib_standalone/Preferences.h @@ -67,6 +67,9 @@ class Preferences { size_t putString(const char * key, String value) { return 0; } + bool isKey(const char * key) { + return true; + } // unused.... @@ -84,7 +87,6 @@ class Preferences { // size_t putBool(const char * key, bool value); // size_t putBytes(const char * key, const void * value, size_t len); - // bool isKey(const char * key); // PreferenceType getType(const char * key); // int8_t getChar(const char * key, int8_t defaultValue = 0); // int16_t getShort(const char * key, int16_t defaultValue = 0); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index f7ab68dea..b5cec000c 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.2" +#define EMSESP_APP_VERSION "3.8.2-dev.3" From ac8ef646e9ddfc938c10de867311c6c21fff6e8f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 8 Feb 2026 14:46:54 +0100 Subject: [PATCH 045/162] fix standalone test --- src/web/WebCustomEntityService.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index e8e8ba345..eb5cef8a9 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -355,13 +355,10 @@ bool WebCustomEntityService::get_value_info(JsonObject output, const char * cmd) // build the json for specific entity void WebCustomEntityService::get_value_json(JsonObject output, CustomEntityItem const & entity) { - output["name"] = (const char *)entity.name; - output["fullname"] = (const char *)entity.name; - output["storage"] = entity.ram == 1 ? "ram" : entity.ram == 2 ? "nvs" : "ems"; - output["type"] = entity.value_type == DeviceValueType::BOOL ? "boolean" : entity.value_type == DeviceValueType::STRING ? "string" : F_(number); - if (entity.uom) { - output["uom"] = EMSdevice::uom_to_string(entity.uom); - } + output["name"] = (const char *)entity.name; + output["fullname"] = (const char *)entity.name; + output["storage"] = entity.ram == 1 ? "ram" : entity.ram == 2 ? "nvs" : "ems"; + output["type"] = entity.value_type == DeviceValueType::BOOL ? "boolean" : entity.value_type == DeviceValueType::STRING ? "string" : F_(number); output["readable"] = true; output["writeable"] = entity.writeable; output["visible"] = true; From 909edf394db1726a5dbe1ab9e7b7270fd407f175 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 9 Feb 2026 09:36:13 +0100 Subject: [PATCH 046/162] add back 4wayValve as bool, #2844 --- interface/package.json | 2 +- src/devices/boiler.cpp | 7 ++++++- src/devices/boiler.h | 1 + src/web/WebCustomEntityService.cpp | 7 ++++--- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/interface/package.json b/interface/package.json index de9d51290..20ed71327 100644 --- a/interface/package.json +++ b/interface/package.json @@ -67,5 +67,5 @@ "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.0" }, - "packageManager": "pnpm@10.29.1" + "packageManager": "pnpm@10.29.2" } diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 3b2b49c1e..1c6157cf9 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -647,6 +647,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::DEGREES, MAKE_CF_CB(set_pool_temp)); // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hp4wayValve_, DeviceValueType::ENUM, FL_(enum_4way), FL_(hp4wayValve), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hp4wayValve_, DeviceValueType::BOOL, FL_(hp4wayValve), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].state, DeviceValueType::BOOL, FL_(hpInput1), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].option, @@ -1731,7 +1732,9 @@ void Boiler::process_HpPower(std::shared_ptr telegram) { has_bitupdate(telegram, hp3wayValve_, 0, 6); // has_bitupdate(telegram, heating_, 0, 0); // heating on? https://github.com/emsesp/EMS-ESP32/discussions/1898 has_bitupdate(telegram, hpSwitchValve_, 0, 4); - + if (coolingType_ == 3) { + has_bitupdate(telegram, hp4wayValve_, 0, 3); // https://github.com/emsesp/EMS-ESP32/issues/2844#issuecomment-3869770845 + } has_bitupdate(telegram, elHeatStep1_, 3, 0); has_bitupdate(telegram, elHeatStep2_, 3, 1); has_bitupdate(telegram, elHeatStep3_, 3, 2); @@ -1831,6 +1834,8 @@ void Boiler::process_HpInConfig(std::shared_ptr telegram) { // Boiler(0x08) -W-> Me(0x0B), HpHeaterConfig(0x0485) void Boiler::process_HpCooling(std::shared_ptr telegram) { + // coolingtype to set 4wayvalve (0x48D), type not published yet, https://github.com/emsesp/EMS-ESP32/issues/2844#issuecomment-3869770845 + has_update(telegram, coolingType_, 0); // none = 0, passive cooling box = 1, active cooling box = 2, 4-way valve = 3, active and passive cooling box = 4. has_update(telegram, pvCooling_, 21); } diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 3de7aec72..becd74bb2 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -270,6 +270,7 @@ class Boiler : public EMSdevice { uint8_t powerReduction_; uint8_t pvCooling_; + uint8_t coolingType_; uint8_t auxHeatMode_; uint8_t auxMaxLimit_; uint8_t auxLimitStart_; diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index eb5cef8a9..3e4356318 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -137,8 +137,6 @@ StateUpdateResult WebCustomEntity::update(JsonObject root, WebCustomEntity & web snprintf(key, sizeof(key), "c:%s", entityItem.name); if (EMSESP::nvs_.isKey(key)) { entityItem.data = EMSESP::nvs_.getString(key).c_str(); - } else { - EMSESP::nvs_.putString(key, entityItem.data.c_str()); } } webCustomEntity.customEntityItems.push_back(entityItem); // add to list @@ -174,13 +172,16 @@ bool WebCustomEntityService::command_setvalue(const char * value, const int8_t i for (CustomEntityItem & entityItem : *customEntityItems_) { if (Helpers::toLower(entityItem.name) == Helpers::toLower(name)) { + if (entityItem.data == value) { + return true; // no change + } if (entityItem.ram == 1) { entityItem.data = value; } else if (entityItem.ram == 2) { // NVS entityItem.data = value; char key[sizeof(entityItem.name) + 2]; snprintf(key, sizeof(key), "c:%s", entityItem.name); - if (EMSESP::nvs_.getString(key) != entityItem.data.c_str()) { + if (!EMSESP::nvs_.isKey(key) || EMSESP::nvs_.getString(key) != entityItem.data.c_str()) { EMSESP::nvs_.putString(key, entityItem.data.c_str()); } } else if (entityItem.value_type == DeviceValueType::STRING) { From ccc40937fbba48d555196b5efc7d3582c579bafa Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Mon, 9 Feb 2026 12:02:38 +0000 Subject: [PATCH 047/162] chore: update generated files for v3.8.2-dev.3 --- docs/Modbus-Entity-Registers.md | 1625 +++++++++++++------------ docs/dump_entities.csv | 1615 ++++++++++++------------ src/core/modbus_entity_parameters.hpp | 153 +-- 3 files changed, 1700 insertions(+), 1693 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index 477e5fb9d..b755e3930 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -139,69 +139,70 @@ uint8 | hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | uint8 | poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 210 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 211 | 1 | 1 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 175 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 176 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 184 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 185 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 193 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 194 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 202 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 203 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 211 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 212 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 212 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 216 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 217 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 213 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 216 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 217 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 218 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 218 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 219 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 219 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 221 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 222 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 222 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 225 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 226 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 228 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 228 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 230 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 230 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 231 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 231 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 233 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 237 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 243 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 238 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 243 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 244 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 244 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 245 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 246 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 247 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 245 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 246 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 247 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 248 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 248 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 249 | 1 | 1 | | dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 | uint8 | dhw.altopprioheat | prioritise heating during dhw | uint8 (>=20<=120) | minutes | true | DHW | 16 | 1 | 1 | @@ -297,37 +298,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -368,9 +369,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -424,7 +425,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -450,37 +451,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -521,9 +522,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -577,7 +578,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -603,37 +604,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -674,9 +675,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -730,7 +731,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -756,37 +757,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -827,9 +828,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -883,7 +884,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -909,37 +910,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -980,9 +981,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1036,7 +1037,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1062,37 +1063,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1133,9 +1134,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1189,7 +1190,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1215,37 +1216,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1286,9 +1287,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1342,7 +1343,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1368,37 +1369,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1439,9 +1440,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1495,7 +1496,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1521,37 +1522,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1592,9 +1593,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1648,7 +1649,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1674,37 +1675,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1745,9 +1746,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1801,7 +1802,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1827,37 +1828,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1898,9 +1899,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1954,7 +1955,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -1980,37 +1981,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2051,9 +2052,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2107,7 +2108,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2133,37 +2134,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2204,9 +2205,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2260,7 +2261,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2286,37 +2287,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2357,9 +2358,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2413,7 +2414,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2439,37 +2440,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2510,9 +2511,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2566,7 +2567,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2592,37 +2593,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2663,9 +2664,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2719,7 +2720,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2745,37 +2746,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2816,9 +2817,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2872,7 +2873,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -2898,37 +2899,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2969,9 +2970,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3025,7 +3026,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -3051,37 +3052,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3122,9 +3123,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3178,7 +3179,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -3204,37 +3205,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3275,9 +3276,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3331,7 +3332,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -3468,69 +3469,70 @@ uint8 | hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | uint8 | poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 210 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 211 | 1 | 1 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 175 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 176 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 184 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 185 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 193 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 194 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 202 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 203 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 211 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 212 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 212 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 216 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 217 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 213 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 216 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 217 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 218 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 218 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 219 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 219 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 221 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 222 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 222 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 225 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 226 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 228 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 228 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 230 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 230 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 231 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 231 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 233 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 237 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 243 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 238 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 243 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 244 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 244 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 245 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 246 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 247 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 245 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 246 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 247 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 248 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 248 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 249 | 1 | 1 | | dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 | uint8 | dhw.altopprioheat | prioritise heating during dhw | uint8 (>=20<=120) | minutes | true | DHW | 16 | 1 | 1 | @@ -3737,69 +3739,70 @@ uint8 | hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | uint8 | poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 210 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 211 | 1 | 1 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 175 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 176 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 184 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 185 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 193 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 194 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 202 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 203 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 211 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 212 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 212 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 216 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 217 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 213 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 216 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 217 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 218 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 218 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 219 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 219 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 221 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 222 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 222 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 225 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 226 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 228 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 228 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 230 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 230 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 231 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 231 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 233 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 237 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 243 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 238 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 243 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 244 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 244 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 245 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 246 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 247 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 245 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 246 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 247 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 248 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 248 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 249 | 1 | 1 | | dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 | uint8 | dhw.altopprioheat | prioritise heating during dhw | uint8 (>=20<=120) | minutes | true | DHW | 16 | 1 | 1 | @@ -3895,37 +3898,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3966,9 +3969,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4022,7 +4025,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4048,37 +4051,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4119,9 +4122,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4175,7 +4178,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4201,37 +4204,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4272,9 +4275,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4328,7 +4331,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4354,37 +4357,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4425,9 +4428,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4481,7 +4484,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4507,37 +4510,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4578,9 +4581,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4634,7 +4637,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4660,37 +4663,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4731,9 +4734,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4787,7 +4790,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -4798,14 +4801,14 @@ uint24 | shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | |-|-|-|-|-|-|-|-|-| -| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 275 | 1 | 1/10 | -| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 276 | 1 | 1 | +| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 276 | 1 | 1/10 | +| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 277 | 1 | 1 | | dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | uint8 -| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 277 | 1 | 1 | +| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 278 | 1 | 1 | uint8 -| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 278 | 1 | 1 | -| heating | heating | boolean | | false | DEVICE_DATA | 279 | 1 | 1 | +| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 279 | 1 | 1 | +| heating | heating | boolean | | false | DEVICE_DATA | 280 | 1 | 1 | | reset | reset | cmd | | true | DEVICE_DATA | 0 | 1 | 1 | | chimneysweeper | chimney sweeper | cmd | | true | DEVICE_DATA | 1 | 1 | 1 | | heatingoff | force heating off | boolean | | true | DEVICE_DATA | 2 | 1 | 1 | @@ -4861,9 +4864,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4936,37 +4939,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 249 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 256 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 257 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 258 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 259 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 260 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 263 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 264 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 265 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 267 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 269 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -5007,9 +5010,9 @@ uint8 | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 270 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 272 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -5063,7 +5066,7 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 274 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | @@ -5176,9 +5179,9 @@ int8 uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | -uint8 -| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +int8 +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | | hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | | hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 @@ -5785,9 +5788,9 @@ int8 uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | -uint8 -| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +int8 +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | | hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | | hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 @@ -5933,9 +5936,9 @@ int8 uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | -uint8 -| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +int8 +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | | hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | | hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 @@ -6098,9 +6101,9 @@ int8 uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | -uint8 -| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +int8 +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | | hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | | hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 @@ -6290,9 +6293,9 @@ int8 uint8 | hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=0) | C | true | HC | 30 | 1 | 1 | -uint8 -| hc1.comftemp | comfort point temperature | uint8 (>=0<=0) | C | true | HC | 31 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +int8 +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | | hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | | hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | int8 diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index 7fe1da4b7..ef7d15df2 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -111,54 +111,55 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,174,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,183,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,192,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,201,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatcomp,heat limit compressor,enum [0 kW\|3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatheat,heat limit heating,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,174,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,175,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,176,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,184,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,185,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,193,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,194,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,202,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,203,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatcomp,heat limit compressor,enum [0 kW\|3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,211,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatheat,heat limit heating,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,212,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxheat,heat limit,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,216,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,218,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,219,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,220,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,222,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,223,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,224,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,231,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,232,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,242,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,244,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,213,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,214,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,215,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,216,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,217,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,218,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,219,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,220,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,221,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,222,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,223,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,224,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,225,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,226,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,227,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,228,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,229,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,230,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,231,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,232,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,233,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,234,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,235,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,236,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,237,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,238,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,239,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,240,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,241,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,242,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,243,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,244,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,245,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,246,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,247,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,248,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,249,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1 @@ -227,27 +228,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Greenstar 2000",boiler,11,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Greenstar 2000",boiler,11,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Greenstar 2000",boiler,11,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Greenstar 2000",boiler,11,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Greenstar 2000",boiler,11,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Greenstar 2000",boiler,11,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Greenstar 2000",boiler,11,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Greenstar 2000",boiler,11,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Greenstar 2000",boiler,11,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Greenstar 2000",boiler,11,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Greenstar 2000",boiler,11,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -280,9 +281,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -325,7 +326,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Greenstar 2000",boiler,11,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -343,27 +344,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "C1200W",boiler,12,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "C1200W",boiler,12,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"C1200W",boiler,12,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"C1200W",boiler,12,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"C1200W",boiler,12,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"C1200W",boiler,12,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"C1200W",boiler,12,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"C1200W",boiler,12,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "C1200W",boiler,12,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "C1200W",boiler,12,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "C1200W",boiler,12,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -396,9 +397,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -441,7 +442,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "C1200W",boiler,12,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -459,27 +460,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "CS5800iG",boiler,16,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "CS5800iG",boiler,16,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"CS5800iG",boiler,16,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"CS5800iG",boiler,16,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"CS5800iG",boiler,16,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"CS5800iG",boiler,16,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"CS5800iG",boiler,16,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"CS5800iG",boiler,16,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "CS5800iG",boiler,16,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "CS5800iG",boiler,16,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "CS5800iG",boiler,16,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -512,9 +513,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -557,7 +558,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "CS5800iG",boiler,16,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -575,27 +576,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "BK13/BK15, Smartline, GB1*2",boiler,64,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "BK13/BK15, Smartline, GB1*2",boiler,64,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -628,9 +629,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -673,7 +674,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -691,27 +692,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logano GB1*5, Logamatic MC10",boiler,72,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logano GB1*5, Logamatic MC10",boiler,72,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logano GB1*5, Logamatic MC10",boiler,72,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Logano GB1*5, Logamatic MC10",boiler,72,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -744,9 +745,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -789,7 +790,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -807,27 +808,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cascade CM10",boiler,81,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cascade CM10",boiler,81,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Cascade CM10",boiler,81,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Cascade CM10",boiler,81,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Cascade CM10",boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Cascade CM10",boiler,81,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Cascade CM10",boiler,81,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Cascade CM10",boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Cascade CM10",boiler,81,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade CM10",boiler,81,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade CM10",boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -860,9 +861,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -905,7 +906,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cascade CM10",boiler,81,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -923,27 +924,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax Plus GB022",boiler,84,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax Plus GB022",boiler,84,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Logamax Plus GB022",boiler,84,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Logamax Plus GB022",boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Logamax Plus GB022",boiler,84,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Logamax Plus GB022",boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Logamax Plus GB022",boiler,84,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus GB022",boiler,84,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus GB022",boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -976,9 +977,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus GB022",boiler,84,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus GB022",boiler,84,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1021,7 +1022,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus GB022",boiler,84,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax Plus GB022",boiler,84,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1039,27 +1040,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1092,9 +1093,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1137,7 +1138,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1155,27 +1156,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Topline, GB162",boiler,115,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Topline, GB162",boiler,115,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Topline, GB162",boiler,115,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Topline, GB162",boiler,115,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Topline, GB162",boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Topline, GB162",boiler,115,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Topline, GB162",boiler,115,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Topline, GB162",boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Topline, GB162",boiler,115,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Topline, GB162",boiler,115,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Topline, GB162",boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1208,9 +1209,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1253,7 +1254,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Topline, GB162",boiler,115,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1271,27 +1272,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cascade MCM10",boiler,121,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cascade MCM10",boiler,121,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Cascade MCM10",boiler,121,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Cascade MCM10",boiler,121,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Cascade MCM10",boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Cascade MCM10",boiler,121,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Cascade MCM10",boiler,121,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Cascade MCM10",boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Cascade MCM10",boiler,121,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade MCM10",boiler,121,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade MCM10",boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1324,9 +1325,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1369,7 +1370,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cascade MCM10",boiler,121,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1387,27 +1388,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Proline",boiler,122,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Proline",boiler,122,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Proline",boiler,122,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Proline",boiler,122,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Proline",boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Proline",boiler,122,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Proline",boiler,122,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Proline",boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Proline",boiler,122,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Proline",boiler,122,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Proline",boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1440,9 +1441,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Proline",boiler,122,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1485,7 +1486,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Proline",boiler,122,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1503,27 +1504,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1556,9 +1557,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1601,7 +1602,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1619,27 +1620,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "GB212",boiler,131,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "GB212",boiler,131,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"GB212",boiler,131,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"GB212",boiler,131,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"GB212",boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"GB212",boiler,131,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"GB212",boiler,131,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"GB212",boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "GB212",boiler,131,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GB212",boiler,131,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GB212",boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1672,9 +1673,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GB212",boiler,131,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1717,7 +1718,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "GB212",boiler,131,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1735,27 +1736,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "GC7000F",boiler,132,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "GC7000F",boiler,132,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"GC7000F",boiler,132,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"GC7000F",boiler,132,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"GC7000F",boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"GC7000F",boiler,132,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"GC7000F",boiler,132,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"GC7000F",boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "GC7000F",boiler,132,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GC7000F",boiler,132,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GC7000F",boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1788,9 +1789,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1833,7 +1834,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "GC7000F",boiler,132,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1851,27 +1852,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1904,9 +1905,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1949,7 +1950,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -1967,27 +1968,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Greenstar 30Ri Compact",boiler,154,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Greenstar 30Ri Compact",boiler,154,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Greenstar 30Ri Compact",boiler,154,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Greenstar 30Ri Compact",boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Greenstar 30Ri Compact",boiler,154,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Greenstar 30Ri Compact",boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Greenstar 30Ri Compact",boiler,154,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Greenstar 30Ri Compact",boiler,154,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Greenstar 30Ri Compact",boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2020,9 +2021,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar 30Ri Compact",boiler,154,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar 30Ri Compact",boiler,154,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2065,7 +2066,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2083,27 +2084,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Suprapur-o",boiler,155,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Suprapur-o",boiler,155,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Suprapur-o",boiler,155,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Suprapur-o",boiler,155,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Suprapur-o",boiler,155,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Suprapur-o",boiler,155,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Suprapur-o",boiler,155,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Suprapur-o",boiler,155,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Suprapur-o",boiler,155,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Suprapur-o",boiler,155,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Suprapur-o",boiler,155,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2136,9 +2137,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2181,7 +2182,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Suprapur-o",boiler,155,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2199,27 +2200,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cerapur Aero",boiler,167,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cerapur Aero",boiler,167,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Cerapur Aero",boiler,167,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Cerapur Aero",boiler,167,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Cerapur Aero",boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Cerapur Aero",boiler,167,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Cerapur Aero",boiler,167,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Cerapur Aero",boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Cerapur Aero",boiler,167,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cerapur Aero",boiler,167,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cerapur Aero",boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2252,9 +2253,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2297,7 +2298,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cerapur Aero",boiler,167,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2315,27 +2316,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Hybrid Heatpump",boiler,168,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Hybrid Heatpump",boiler,168,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Hybrid Heatpump",boiler,168,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Hybrid Heatpump",boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Hybrid Heatpump",boiler,168,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Hybrid Heatpump",boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Hybrid Heatpump",boiler,168,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Hybrid Heatpump",boiler,168,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Hybrid Heatpump",boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2368,9 +2369,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2413,7 +2414,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Hybrid Heatpump",boiler,168,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2431,27 +2432,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logano GB212",boiler,170,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logano GB212",boiler,170,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Logano GB212",boiler,170,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Logano GB212",boiler,170,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Logano GB212",boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Logano GB212",boiler,170,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Logano GB212",boiler,170,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Logano GB212",boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Logano GB212",boiler,170,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB212",boiler,170,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB212",boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2484,9 +2485,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2529,7 +2530,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logano GB212",boiler,170,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -2645,54 +2646,55 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,174,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,183,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,192,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,201,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,174,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,175,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,176,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,184,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,185,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,193,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,194,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,202,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,203,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,211,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,212,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,216,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,218,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,219,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,220,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,222,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,223,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,224,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,231,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,232,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,242,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,244,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,213,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,214,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,215,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,216,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,217,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,218,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,219,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,220,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,221,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,222,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,223,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,224,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,225,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,226,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,227,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,228,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,229,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,230,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,231,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,232,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,233,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,234,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,235,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,236,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,237,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,238,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,239,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,240,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,241,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,242,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,243,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,244,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,245,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,246,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,247,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,248,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,249,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1 @@ -2859,54 +2861,55 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1 "Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1 "Geo 5xx",boiler,173,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1 -"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,174,1 -"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8 -"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,183,1 -"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8 -"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,192,1 -"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8 -"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,201,1 -"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8 -"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1 -"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1 +"Geo 5xx",boiler,173,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,174,1 +"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,175,1 +"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,176,8 +"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,184,1 +"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,185,8 +"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,193,1 +"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,194,8 +"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,202,1 +"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,203,8 +"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,211,1 +"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,212,1 "Geo 5xx",boiler,173,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1 -"Geo 5xx",boiler,173,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1 -"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1 -"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1 -"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1 -"Geo 5xx",boiler,173,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,216,1 -"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1 -"Geo 5xx",boiler,173,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,218,1 -"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,219,1 -"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,220,1 -"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1 -"Geo 5xx",boiler,173,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,222,1 -"Geo 5xx",boiler,173,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,223,1 -"Geo 5xx",boiler,173,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,224,1 -"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1 -"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1 -"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1 -"Geo 5xx",boiler,173,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1 -"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1 -"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1 -"Geo 5xx",boiler,173,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,231,1 -"Geo 5xx",boiler,173,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,232,1 -"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1 -"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1 -"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1 -"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1 -"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1 -"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1 -"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1 -"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1 -"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1 -"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,242,1 -"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1 -"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,244,1 -"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1 -"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1 -"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1 -"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1 +"Geo 5xx",boiler,173,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,213,1 +"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,214,1 +"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,215,1 +"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,216,1 +"Geo 5xx",boiler,173,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,217,1 +"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,218,1 +"Geo 5xx",boiler,173,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,219,1 +"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,220,1 +"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,221,1 +"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,222,1 +"Geo 5xx",boiler,173,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,223,1 +"Geo 5xx",boiler,173,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,224,1 +"Geo 5xx",boiler,173,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,225,1 +"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,226,1 +"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,227,1 +"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,228,1 +"Geo 5xx",boiler,173,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,229,1 +"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,230,1 +"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,231,1 +"Geo 5xx",boiler,173,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,232,1 +"Geo 5xx",boiler,173,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,233,1 +"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,234,1 +"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,235,1 +"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,236,1 +"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,237,1 +"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,238,1 +"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,239,1 +"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,240,1 +"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,241,1 +"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,242,1 +"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,243,1 +"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,244,1 +"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,245,1 +"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,246,1 +"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,247,1 +"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,248,1 +"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,249,1 "Geo 5xx",boiler,173,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1 "Geo 5xx",boiler,173,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1 "Geo 5xx",boiler,173,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1 @@ -2975,27 +2978,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3028,9 +3031,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3073,7 +3076,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3091,27 +3094,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax U122, Cerapur",boiler,203,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax U122, Cerapur",boiler,203,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Logamax U122, Cerapur",boiler,203,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Logamax U122, Cerapur",boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Logamax U122, Cerapur",boiler,203,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Logamax U122, Cerapur",boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Logamax U122, Cerapur",boiler,203,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax U122, Cerapur",boiler,203,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax U122, Cerapur",boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3144,9 +3147,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax U122, Cerapur",boiler,203,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax U122, Cerapur",boiler,203,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3189,7 +3192,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3207,27 +3210,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Ecomline Excellent",boiler,206,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Ecomline Excellent",boiler,206,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Ecomline Excellent",boiler,206,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Ecomline Excellent",boiler,206,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Ecomline Excellent",boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Ecomline Excellent",boiler,206,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Ecomline Excellent",boiler,206,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Ecomline Excellent",boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Ecomline Excellent",boiler,206,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Ecomline Excellent",boiler,206,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Ecomline Excellent",boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3260,9 +3263,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3305,7 +3308,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Ecomline Excellent",boiler,206,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3323,27 +3326,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3376,9 +3379,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3421,7 +3424,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3439,27 +3442,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cascade MC400",boiler,210,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cascade MC400",boiler,210,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Cascade MC400",boiler,210,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Cascade MC400",boiler,210,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Cascade MC400",boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Cascade MC400",boiler,210,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Cascade MC400",boiler,210,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Cascade MC400",boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Cascade MC400",boiler,210,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade MC400",boiler,210,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade MC400",boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3492,9 +3495,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3537,7 +3540,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Cascade MC400",boiler,210,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3555,27 +3558,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "EasyControl Adapter",boiler,211,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "EasyControl Adapter",boiler,211,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"EasyControl Adapter",boiler,211,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"EasyControl Adapter",boiler,211,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"EasyControl Adapter",boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"EasyControl Adapter",boiler,211,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"EasyControl Adapter",boiler,211,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"EasyControl Adapter",boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "EasyControl Adapter",boiler,211,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "EasyControl Adapter",boiler,211,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "EasyControl Adapter",boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3608,9 +3611,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3653,16 +3656,16 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16,C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,275,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,276,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16,C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,276,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,277,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,5,9,1,75,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=0),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,277,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=0),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,278,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,5,0,1,279,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=0),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,278,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=0),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,279,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,5,0,1,280,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 @@ -3709,9 +3712,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3768,27 +3771,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,256,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,257,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,258,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,259,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,260,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,261,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,262,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,263,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,264,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,265,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,266,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,267,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,268,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,269,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3821,9 +3824,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,270,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,272,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3866,7 +3869,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,274,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 @@ -3934,8 +3937,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "UI800, BC400",thermostat,4,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "UI800, BC400",thermostat,4,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "UI800, BC400",thermostat,4,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"UI800, BC400",thermostat,4,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"UI800, BC400",thermostat,4,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"UI800, BC400",thermostat,4,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"UI800, BC400",thermostat,4,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 "UI800, BC400",thermostat,4,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 "UI800, BC400",thermostat,4,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "UI800, BC400",thermostat,4,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 @@ -4325,8 +4328,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC200, CW100, CR120, CR50",thermostat,157,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 @@ -4420,8 +4423,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 @@ -4526,8 +4529,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Rego 2000/3000",thermostat,172,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "Rego 2000/3000",thermostat,172,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "Rego 2000/3000",thermostat,172,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"Rego 2000/3000",thermostat,172,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"Rego 2000/3000",thermostat,172,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"Rego 2000/3000",thermostat,172,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"Rego 2000/3000",thermostat,172,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 "Rego 2000/3000",thermostat,172,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 "Rego 2000/3000",thermostat,172,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "Rego 2000/3000",thermostat,172,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 @@ -4650,8 +4653,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comfoffset,comfort point offset,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comftemp,comfort point temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index db68e09fa..4e2a85f55 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -121,82 +121,83 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTa4), 171, 1), // hpta4 REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTw1), 172, 1), // hptw1 REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolSetTemp), 173, 1), // poolsettemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput1), 174, 1), // hpin1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn1Opt), 175, 8), // hpin1opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput2), 183, 1), // hpin2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn2Opt), 184, 8), // hpin2opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput3), 192, 1), // hpin3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn3Opt), 193, 8), // hpin3opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput4), 201, 1), // hpin4 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn4Opt), 202, 8), // hpin4opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatComp), 210, 1), // maxheatcomp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatHeat), 211, 1), // maxheatheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterSource), 212, 1), // auxheatersource - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvCooling), 213, 1), // pvcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOnly), 214, 1), // auxheateronly - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOff), 215, 1), // auxheateroff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterStatus), 216, 1), // auxheaterstatus - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterLevel), 217, 1), // auxheaterlevel - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterDelay), 218, 1), // auxheaterdelay - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxMaxLimit), 219, 1), // auxmaxlimit - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxLimitStart), 220, 1), // auxlimitstart - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMode), 221, 1), // auxheatrmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystHeat), 222, 1), // hphystheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystCool), 223, 1), // hphystcool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystPool), 224, 1), // hphystpool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentMode), 225, 1), // silentmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentFrom), 226, 1), // silentfrom - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentTo), 227, 1), // silentto - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(minTempSilent), 228, 1), // mintempsilent - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempParMode), 229, 1), // tempparmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMixValve), 230, 1), // auxheatmix - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffHeat), 231, 1), // tempdiffheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffCool), 232, 1), // tempdiffcool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(vp_cooling), 233, 1), // vpcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 234, 1), // heatcable - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(VC0valve), 235, 1), // vc0valve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePump), 236, 1), // primepump - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePumpMod), 237, 1), // primepumpmod - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp3wayValve), 238, 1), // hp3way - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep1), 239, 1), // elheatstep1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep2), 240, 1), // elheatstep2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep3), 241, 1), // elheatstep3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpEA0), 242, 1), // hpea0 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPumpMode), 243, 1), // hppumpmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpFan), 244, 1), // fan - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanSpd), 245, 1), // fanspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpShutdown), 246, 1), // shutdown - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCurrPower), 247, 1), // hpcurrpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPowerLimit), 248, 1), // hppowerlimit - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(exhaustTemp), 249, 1), // exhausttemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas), 250, 1), // burngas - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas2), 251, 1), // burngas2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(flameCurr), 252, 1), // flamecurr - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 253, 1), // fanwork - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 254, 1), // ignwork - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 255, 1), // oilpreheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 256, 1), // burnmaxpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 257, 1), // burnminperiod - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 258, 1), // absburnpow - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 259, 1), // heatblock - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 260, 1), // boilhyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 261, 1), // boilhystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 262, 1), // boil2hyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 263, 1), // boil2hystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 264, 1), // curveon - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 265, 1), // curvebase - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 266, 1), // curveend - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 267, 1), // summertemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 268, 1), // nofrostmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 269, 1), // nofrosttemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 270, 2), // gasmeterheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 272, 2), // nrgheat2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 274, 1), // nompower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 275, 1), // netflowtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 276, 1), // heatvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 277, 1), // keepwarmtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 278, 1), // setreturntemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 279, 1), // heating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp4wayValve), 174, 1), // hp4way + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput1), 175, 1), // hpin1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn1Opt), 176, 8), // hpin1opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput2), 184, 1), // hpin2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn2Opt), 185, 8), // hpin2opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput3), 193, 1), // hpin3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn3Opt), 194, 8), // hpin3opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput4), 202, 1), // hpin4 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn4Opt), 203, 8), // hpin4opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatComp), 211, 1), // maxheatcomp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatHeat), 212, 1), // maxheatheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterSource), 213, 1), // auxheatersource + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvCooling), 214, 1), // pvcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOnly), 215, 1), // auxheateronly + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOff), 216, 1), // auxheateroff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterStatus), 217, 1), // auxheaterstatus + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterLevel), 218, 1), // auxheaterlevel + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterDelay), 219, 1), // auxheaterdelay + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxMaxLimit), 220, 1), // auxmaxlimit + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxLimitStart), 221, 1), // auxlimitstart + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMode), 222, 1), // auxheatrmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystHeat), 223, 1), // hphystheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystCool), 224, 1), // hphystcool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystPool), 225, 1), // hphystpool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentMode), 226, 1), // silentmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentFrom), 227, 1), // silentfrom + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentTo), 228, 1), // silentto + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(minTempSilent), 229, 1), // mintempsilent + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempParMode), 230, 1), // tempparmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMixValve), 231, 1), // auxheatmix + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffHeat), 232, 1), // tempdiffheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffCool), 233, 1), // tempdiffcool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(vp_cooling), 234, 1), // vpcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 235, 1), // heatcable + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(VC0valve), 236, 1), // vc0valve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePump), 237, 1), // primepump + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePumpMod), 238, 1), // primepumpmod + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp3wayValve), 239, 1), // hp3way + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep1), 240, 1), // elheatstep1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep2), 241, 1), // elheatstep2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep3), 242, 1), // elheatstep3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpEA0), 243, 1), // hpea0 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPumpMode), 244, 1), // hppumpmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpFan), 245, 1), // fan + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanSpd), 246, 1), // fanspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpShutdown), 247, 1), // shutdown + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCurrPower), 248, 1), // hpcurrpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPowerLimit), 249, 1), // hppowerlimit + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(exhaustTemp), 250, 1), // exhausttemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas), 251, 1), // burngas + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas2), 252, 1), // burngas2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(flameCurr), 253, 1), // flamecurr + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 254, 1), // fanwork + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 255, 1), // ignwork + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 256, 1), // oilpreheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 257, 1), // burnmaxpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 258, 1), // burnminperiod + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 259, 1), // absburnpow + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 260, 1), // heatblock + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 261, 1), // boilhyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 262, 1), // boilhystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 263, 1), // boil2hyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 264, 1), // boil2hystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 265, 1), // curveon + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 266, 1), // curvebase + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 267, 1), // curveend + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 268, 1), // summertemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 269, 1), // nofrostmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 270, 1), // nofrosttemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 271, 2), // gasmeterheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 273, 2), // nrgheat2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 275, 1), // nompower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 276, 1), // netflowtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 277, 1), // heatvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 278, 1), // keepwarmtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 279, 1), // setreturntemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 280, 1), // heating REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw), 0, 2), // nrg REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(meterWw), 2, 2), // meter REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(upTimeCompWw), 4, 2), // uptimecomp From 96ae3bbbba9c0e3bb89355b18403a997f7904760 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 12 Feb 2026 12:01:39 +0100 Subject: [PATCH 048/162] customze device brand #2784 --- CHANGELOG_LATEST.md | 1 + interface/.typesafe-i18n.json | 2 +- interface/package.json | 16 +- interface/pnpm-lock.yaml | 348 +++++++++++----------- interface/src/app/main/Customizations.tsx | 48 ++- src/core/emsdevice.cpp | 46 ++- src/core/emsdevice.h | 24 +- src/core/emsesp.cpp | 4 +- src/emsesp_version.h | 2 +- src/web/WebCustomizationService.cpp | 50 ++-- src/web/WebCustomizationService.h | 9 +- 11 files changed, 306 insertions(+), 244 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 94ea9c546..232b748fb 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -7,6 +7,7 @@ For more details go to [emsesp.org](https://emsesp.org/). ## Added - comfortpoint for BC400 [#2935](https://github.com/emsesp/EMS-ESP32/issues/2935) +- customize device brand [#2784](https://github.com/emsesp/EMS-ESP32/issues/2784) ## Fixed diff --git a/interface/.typesafe-i18n.json b/interface/.typesafe-i18n.json index ab39dacfa..f6eb40742 100644 --- a/interface/.typesafe-i18n.json +++ b/interface/.typesafe-i18n.json @@ -1,5 +1,5 @@ { "adapter": "react", "baseLocale": "pl", - "$schema": "https://unpkg.com/typesafe-i18n@5.26.2/schema/typesafe-i18n.json" + "$schema": "https://unpkg.com/typesafe-i18n@5.27.1/schema/typesafe-i18n.json" } \ No newline at end of file diff --git a/interface/package.json b/interface/package.json index 20ed71327..e497a9859 100644 --- a/interface/package.json +++ b/interface/package.json @@ -26,8 +26,8 @@ "@alova/adapter-xhr": "2.3.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@mui/icons-material": "^7.3.7", - "@mui/material": "^7.3.7", + "@mui/icons-material": "^7.3.8", + "@mui/material": "^7.3.8", "@preact/compat": "^18.3.1", "@table-library/react-table-library": "4.1.15", "alova": "3.5.0", @@ -43,7 +43,7 @@ "react-icons": "^5.5.0", "react-router": "^7.13.0", "react-toastify": "^11.0.5", - "typesafe-i18n": "^5.26.2", + "typesafe-i18n": "^5.27.1", "typescript": "^5.9.3" }, "devDependencies": { @@ -52,8 +52,8 @@ "@preact/compat": "^18.3.1", "@preact/preset-vite": "^2.10.3", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.2.2", - "@types/react": "^19.2.13", + "@types/node": "^25.2.3", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", "concurrently": "^9.2.1", @@ -62,10 +62,10 @@ "prettier": "^3.8.1", "rollup-plugin-visualizer": "^6.0.5", "terser": "^5.46.0", - "typescript-eslint": "^8.54.0", + "typescript-eslint": "^8.55.0", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", - "vite-tsconfig-paths": "^6.1.0" + "vite-tsconfig-paths": "^6.1.1" }, - "packageManager": "pnpm@10.29.2" + "packageManager": "pnpm@10.29.3" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 993277ad1..cefa009f5 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -13,22 +13,22 @@ importers: version: 2.3.1(alova@3.5.0) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.2.13)(react@19.2.4) + version: 11.14.0(@types/react@19.2.14)(react@19.2.4) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@mui/icons-material': - specifier: ^7.3.7 - version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) + specifier: ^7.3.8 + version: 7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@mui/material': - specifier: ^7.3.7 - version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^7.3.8 + version: 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@preact/compat': specifier: ^18.3.1 version: 18.3.1(preact@10.28.3) '@table-library/react-table-library': specifier: 4.1.15 - version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) alova: specifier: 3.5.0 version: 3.5.0 @@ -69,8 +69,8 @@ importers: specifier: ^11.0.5 version: 11.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) typesafe-i18n: - specifier: ^5.26.2 - version: 5.26.2(typescript@5.9.3) + specifier: ^5.27.1 + version: 5.27.1(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -83,19 +83,19 @@ importers: version: 10.0.1(eslint@10.0.0) '@preact/preset-vite': specifier: ^2.10.3 - version: 2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) + version: 2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) '@types/node': - specifier: ^25.2.2 - version: 25.2.2 + specifier: ^25.2.3 + version: 25.2.3 '@types/react': - specifier: ^19.2.13 - version: 19.2.13 + specifier: ^19.2.14 + version: 19.2.14 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.13) + version: 19.2.3(@types/react@19.2.14) axe-core: specifier: ^4.11.1 version: 4.11.1 @@ -118,17 +118,17 @@ importers: specifier: ^5.46.0 version: 5.46.0 typescript-eslint: - specifier: ^8.54.0 - version: 8.54.0(eslint@10.0.0)(typescript@5.9.3) + specifier: ^8.55.0 + version: 8.55.0(eslint@10.0.0)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(terser@5.46.0) + version: 7.3.1(@types/node@25.2.3)(terser@5.46.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) + version: 0.6.1(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) vite-tsconfig-paths: - specifier: ^6.1.0 - version: 6.1.0(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) + specifier: ^6.1.1 + version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) packages: @@ -535,27 +535,27 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@mui/core-downloads-tracker@7.3.7': - resolution: {integrity: sha512-8jWwS6FweMkpyRkrJooamUGe1CQfO1yJ+lM43IyUJbrhHW/ObES+6ry4vfGi8EKaldHL3t3BG1bcLcERuJPcjg==} + '@mui/core-downloads-tracker@7.3.8': + resolution: {integrity: sha512-s9UHZo7QJVly7gNArEZkbbsimHqJZhElgBpXIJdehZ4OWXt+CCr0SBDgUCDJnQrqpd1dWK2dLq5rmO4mCBmI3w==} - '@mui/icons-material@7.3.7': - resolution: {integrity: sha512-3Q+ulAqG+A1+R4ebgoIs7AccaJhIGy+Xi/9OnvX376jQ6wcy+rz4geDGrxQxCGzdjOQr4Z3NgyFSZCz4T999lA==} + '@mui/icons-material@7.3.8': + resolution: {integrity: sha512-88sWg/UJc1X82OMO+ISR4E3P58I3BjFVg0qkmDu7OWlN8VijneZD3ylFA+ImxuPjMHW3SHosfSJYy1fztoz0fw==} engines: {node: '>=14.0.0'} peerDependencies: - '@mui/material': ^7.3.7 + '@mui/material': ^7.3.8 '@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 - '@mui/material@7.3.7': - resolution: {integrity: sha512-6bdIxqzeOtBAj2wAsfhWCYyMKPLkRO9u/2o5yexcL0C3APqyy91iGSWgT3H7hg+zR2XgE61+WAu12wXPON8b6A==} + '@mui/material@7.3.8': + resolution: {integrity: sha512-QKd1RhDXE1hf2sQDNayA9ic9jGkEgvZOf0tTkJxlBPG8ns8aS4rS8WwYURw2x5y3739p0HauUXX9WbH7UufFLw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^7.3.7 + '@mui/material-pigment-css': ^7.3.8 '@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 @@ -569,8 +569,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@7.3.7': - resolution: {integrity: sha512-w7r1+CYhG0syCAQUWAuV5zSaU2/67WA9JXUderdb7DzCIJdp/5RmJv6L85wRjgKCMsxFF0Kfn0kPgPbPgw/jdw==} + '@mui/private-theming@7.3.8': + resolution: {integrity: sha512-du5dlPZ9XL3xW2apHoGDXBI+QLtyVJGrXNCfcNYfP/ojkz1RQ0rRV6VG9Rkm1DqEFRG8mjjTL7zmE1Bvn1eR4A==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -579,8 +579,8 @@ packages: '@types/react': optional: true - '@mui/styled-engine@7.3.7': - resolution: {integrity: sha512-y/QkNXv6cF6dZ5APztd/dFWfQ6LHKPx3skyYO38YhQD4+Cxd6sFAL3Z38WMSSC8LQz145Mpp3CcLrSCLKPwYAg==} + '@mui/styled-engine@7.3.8': + resolution: {integrity: sha512-JHAeXQzS0tJ+Fq3C6J4TVDsW+yKhO4uuxuiLaopNStJeQYBIUCXpKYyUCcgXym4AmhbznQnv9RlHywSH6b0FOg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -592,8 +592,8 @@ packages: '@emotion/styled': optional: true - '@mui/system@7.3.7': - resolution: {integrity: sha512-DovL3k+FBRKnhmatzUMyO5bKkhMLlQ9L7Qw5qHrre3m8zCZmE+31NDVBFfqrbrA7sq681qaEIHdkWD5nmiAjyQ==} + '@mui/system@7.3.8': + resolution: {integrity: sha512-hoFRj4Zw2Km8DPWZp/nKG+ao5Jw5LSk2m/e4EGc6M3RRwXKEkMSG4TgtfVJg7dS2homRwtdXSMW+iRO0ZJ4+IA==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -608,16 +608,16 @@ packages: '@types/react': optional: true - '@mui/types@7.4.10': - resolution: {integrity: sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==} + '@mui/types@7.4.11': + resolution: {integrity: sha512-fZ2xO9D08IKOxO2oUBi1nnVKH6oJUD+64cnv4YAaFoC0E5+i1+S5AHbNqqvZlYYsbPEQ6qEVwuBqY3jl5W4G+Q==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/utils@7.3.7': - resolution: {integrity: sha512-+YjnjMRnyeTkWnspzoxRdiSOgkrcpTikhNPoxOZW0APXx+urHtUoXJ9lbtCZRCA5a4dg5gSbd19alL1DvRs5fg==} + '@mui/utils@7.3.8': + resolution: {integrity: sha512-kZRcE2620CBGr+XI8YMmwPj6WIPwSF7uMJjvSfqd8zXVvlz0MCJbzRRUGNf8NgflCLthdji2DdS643TeyJ3+nA==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -901,8 +901,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.2.2': - resolution: {integrity: sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==} + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -920,8 +920,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.2.13': - resolution: {integrity: sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -929,63 +929,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.54.0': - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + '@typescript-eslint/eslint-plugin@8.55.0': + resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 + '@typescript-eslint/parser': ^8.55.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.54.0': - resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + '@typescript-eslint/parser@8.55.0': + resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.54.0': - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + '@typescript-eslint/project-service@8.55.0': + resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.54.0': - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + '@typescript-eslint/scope-manager@8.55.0': + resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.54.0': - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + '@typescript-eslint/tsconfig-utils@8.55.0': + resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.54.0': - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + '@typescript-eslint/type-utils@8.55.0': + resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.54.0': - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + '@typescript-eslint/types@8.55.0': + resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.54.0': - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + '@typescript-eslint/typescript-estree@8.55.0': + resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.54.0': - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + '@typescript-eslint/utils@8.55.0': + resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.54.0': - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + '@typescript-eslint/visitor-keys@8.55.0': + resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -2945,14 +2945,14 @@ packages: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typesafe-i18n@5.26.2: - resolution: {integrity: sha512-2QAriFmiY5JwUAJtG7yufoE/XZ1aFBY++wj7YFS2yo89a3jLBfKoWSdq5JfQYk1V2BS7V2c/u+KEcaCQoE65hw==} + typesafe-i18n@5.27.1: + resolution: {integrity: sha512-749uWo2ZXETT//kWjVYPm8QPYR8xLh8G0wLfoAyCAtAmysX67uCaAyLjAjAWojL6fuJpE5B6yIjwvO9orXzUPg==} hasBin: true peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.54.0: - resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} + typescript-eslint@8.55.0: + resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3015,8 +3015,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x - vite-tsconfig-paths@6.1.0: - resolution: {integrity: sha512-kpd3sY9glHIDaq4V/Tlc1Y8WaKtutoc3B525GHxEVKWX42FKfQsXvjFOemu1I8VIN8pNbrMLWVTbW79JaRUxKg==} + vite-tsconfig-paths@6.1.1: + resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} peerDependencies: vite: '*' @@ -3289,7 +3289,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4)': + '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 @@ -3301,7 +3301,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.2.4 optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 transitivePeerDependencies: - supports-color @@ -3315,18 +3315,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) '@emotion/utils': 1.4.2 react: 19.2.4 optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 transitivePeerDependencies: - supports-color @@ -3496,25 +3496,25 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@mui/core-downloads-tracker@7.3.7': {} + '@mui/core-downloads-tracker@7.3.8': {} - '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)': + '@mui/icons-material@7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 - '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/core-downloads-tracker': 7.3.7 - '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) - '@mui/types': 7.4.10(@types/react@19.2.13) - '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4) + '@mui/core-downloads-tracker': 7.3.8 + '@mui/system': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@mui/types': 7.4.11(@types/react@19.2.14) + '@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.2.13) + '@types/react-transition-group': 4.4.12(@types/react@19.2.14) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 @@ -3523,20 +3523,20 @@ snapshots: react-is: 19.2.4 react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) - '@types/react': 19.2.13 + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@types/react': 19.2.14 - '@mui/private-theming@7.3.7(@types/react@19.2.13)(react@19.2.4)': + '@mui/private-theming@7.3.8(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4) + '@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4) prop-types: 15.8.1 react: 19.2.4 optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 - '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(react@19.2.4)': + '@mui/styled-engine@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/cache': 11.14.0 @@ -3546,42 +3546,42 @@ snapshots: prop-types: 15.8.1 react: 19.2.4 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) - '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)': + '@mui/system@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/private-theming': 7.3.7(@types/react@19.2.13)(react@19.2.4) - '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(react@19.2.4) - '@mui/types': 7.4.10(@types/react@19.2.13) - '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4) + '@mui/private-theming': 7.3.8(@types/react@19.2.14)(react@19.2.4) + '@mui/styled-engine': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + '@mui/types': 7.4.11(@types/react@19.2.14) + '@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 react: 19.2.4 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4) - '@types/react': 19.2.13 + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@types/react': 19.2.14 - '@mui/types@7.4.10(@types/react@19.2.13)': + '@mui/types@7.4.11(@types/react@19.2.14)': dependencies: '@babel/runtime': 7.28.6 optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 - '@mui/utils@7.3.7(@types/react@19.2.13)(react@19.2.4)': + '@mui/utils@7.3.8(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/types': 7.4.10(@types/react@19.2.13) + '@mui/types': 7.4.11(@types/react@19.2.14) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 19.2.4 react-is: 19.2.4 optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 '@noble/hashes@1.8.0': {} @@ -3607,18 +3607,18 @@ snapshots: dependencies: preact: 10.28.3 - '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0))': + '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) + '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)) + vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) transitivePeerDependencies: - preact - rollup @@ -3632,7 +3632,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0))': + '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.2 @@ -3640,7 +3640,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.28.3 - vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) transitivePeerDependencies: - supports-color @@ -3734,9 +3734,9 @@ snapshots: '@sindresorhus/is@0.7.0': {} - '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) clsx: 1.1.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -3766,7 +3766,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.2.2 + '@types/node': 25.2.3 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3795,19 +3795,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.2.2 + '@types/node': 25.2.3 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.2.2 + '@types/node': 25.2.3 '@types/minimatch@6.0.0': dependencies: minimatch: 10.1.2 - '@types/node@25.2.2': + '@types/node@25.2.3': dependencies: undici-types: 7.16.0 @@ -3815,34 +3815,34 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@19.2.3(@types/react@19.2.13)': + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 - '@types/react-transition-group@4.4.12(@types/react@19.2.13)': + '@types/react-transition-group@4.4.12(@types/react@19.2.14)': dependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 - '@types/react@19.2.13': + '@types/react@19.2.14': dependencies: csstype: 3.2.3 '@types/responselike@1.0.3': dependencies: - '@types/node': 25.2.2 + '@types/node': 25.2.3 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.2.2 + '@types/node': 25.2.3 - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/type-utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.55.0 eslint: 10.0.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3851,41 +3851,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.55.0 debug: 4.4.3 eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.54.0': + '@typescript-eslint/scope-manager@8.55.0': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.54.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) debug: 4.4.3 eslint: 10.0.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3893,14 +3893,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@8.55.0': {} - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.4 @@ -3910,20 +3910,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.54.0': + '@typescript-eslint/visitor-keys@8.55.0': dependencies: - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/types': 8.55.0 eslint-visitor-keys: 4.2.1 acorn-jsx@5.3.2(acorn@8.15.0): @@ -5931,16 +5931,16 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typesafe-i18n@5.26.2(typescript@5.9.3): + typesafe-i18n@5.27.1(typescript@5.9.3): dependencies: typescript: 5.9.3 - typescript-eslint@8.54.0(eslint@10.0.0)(typescript@5.9.3): + typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.54.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: @@ -5986,7 +5986,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6011,11 +6011,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6023,19 +6023,19 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) - vite-tsconfig-paths@6.1.0(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(terser@5.46.0)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.2.2)(terser@5.46.0) + vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.2.2)(terser@5.46.0): + vite@7.3.1(@types/node@25.2.3)(terser@5.46.0): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -6044,7 +6044,7 @@ snapshots: rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.2.2 + '@types/node': 25.2.3 fsevents: 2.3.3 terser: 5.46.0 diff --git a/interface/src/app/main/Customizations.tsx b/interface/src/app/main/Customizations.tsx index 21711380e..53fe71cfb 100644 --- a/interface/src/app/main/Customizations.tsx +++ b/interface/src/app/main/Customizations.tsx @@ -111,13 +111,14 @@ const Customizations = () => { const [selectedDeviceTypeNameURL, setSelectedDeviceTypeNameURL] = useState(''); // needed for API URL const [selectedDeviceName, setSelectedDeviceName] = useState(''); + const [selectedDeviceBrand, setSelectedDeviceBrand] = useState(''); const { send: sendResetCustomizations } = useRequest(resetCustomizations(), { immediate: false }); const { send: sendDeviceName } = useRequest( - (data: { id: number; name: string }) => writeDeviceName(data), + (data: { id: number; name: string; brand: string }) => writeDeviceName(data), { immediate: false } @@ -267,6 +268,7 @@ const Customizations = () => { if (device) { setSelectedDeviceTypeNameURL(device.url || ''); setSelectedDeviceName(device.n); + setSelectedDeviceBrand(device.b); } setNumChanges(0); setRestartNeeded(false); @@ -442,7 +444,11 @@ const Customizations = () => { }, [devices, deviceEntities, selectedDevice, sendCustomizationEntities, LL]); const renameDevice = useCallback(async () => { - await sendDeviceName({ id: selectedDevice, name: selectedDeviceName }) + await sendDeviceName({ + id: selectedDevice, + name: selectedDeviceName, + brand: selectedDeviceBrand + }) .then(() => { toast.success(LL.UPDATED_OF(LL.NAME(1))); }) @@ -453,7 +459,14 @@ const Customizations = () => { setRename(false); await fetchCoreData(); }); - }, [selectedDevice, selectedDeviceName, sendDeviceName, LL, fetchCoreData]); + }, [ + selectedDevice, + selectedDeviceName, + selectedDeviceBrand, + sendDeviceName, + LL, + fetchCoreData + ]); const renderDeviceList = () => ( <> @@ -462,15 +475,26 @@ const Customizations = () => { {rename ? ( - setSelectedDeviceName(e.target.value)} - margin="normal" - /> + <> + setSelectedDeviceName(e.target.value)} + margin="normal" + /> + setSelectedDeviceBrand(e.target.value)} + margin="normal" + /> + ) : ( DeviceValue::NUM_TAGS ? 0 : tag]); } +uint8_t EMSdevice::tag_to_flag(const uint8_t tag) { + if (tag >= DeviceValueTAG::TAG_HC1 && tag <= DeviceValueTAG::TAG_HC8) { + return CommandFlag::CMD_FLAG_HC; + } else if (tag >= DeviceValueTAG::TAG_DHW1 && tag <= DeviceValueTAG::TAG_DHW10) { + return CommandFlag::CMD_FLAG_DHW; + } else if (tag >= DeviceValueTAG::TAG_HS1 && tag <= DeviceValueTAG::TAG_HS16) { + return CommandFlag::CMD_FLAG_HS; + } else if (tag >= DeviceValueTAG::TAG_AHS1 && tag <= DeviceValueTAG::TAG_AHS1) { + return CommandFlag::CMD_FLAG_AHS; + } else if (tag >= DeviceValueTAG::TAG_SRC1 && tag <= DeviceValueTAG::TAG_SRC16) { + return CommandFlag::CMD_FLAG_SRC; + } + return 0; +} + // convert UOM to a char string - translating only for hours/minutes/seconds const char * EMSdevice::uom_to_string(uint8_t uom) { switch (uom) { @@ -90,6 +105,9 @@ const char * EMSdevice::uom_to_string(uint8_t uom) { } const char * EMSdevice::brand_to_char() { + if (!custom_brand().empty()) { + return custom_brand().c_str(); + } switch (brand_) { case EMSdevice::Brand::BOSCH: return F_(bosch); @@ -316,7 +334,7 @@ std::string EMSdevice::to_string() { return std::string(name()) + " (DeviceID:" + Helpers::hextoa(device_id_) + ")"; } - if (brand_ == Brand::NO_BRAND) { + if (brand_ == Brand::NO_BRAND && custom_brand().empty()) { return std::string(name()) + " (DeviceID:" + Helpers::hextoa(device_id_) + ", ProductID:" + Helpers::itoa(product_id_) + ", Version:" + version_ + ")"; } @@ -332,7 +350,7 @@ std::string EMSdevice::to_string_version() { // returns out brand + device name // translated std::string EMSdevice::to_string_short() { - if (brand_ == Brand::NO_BRAND) { + if (brand_ == Brand::NO_BRAND && custom_brand().empty()) { return std::string(device_type_2_device_name_translated()) + ": " + name(); } @@ -650,25 +668,21 @@ void EMSdevice::add_device_value(int8_t tag, // to b // add a new command if it has a function attached if (has_cmd) { - uint8_t flags = CommandFlag::ADMIN_ONLY; // executing commands require admin privileges - - if (tag >= DeviceValueTAG::TAG_HC1 && tag <= DeviceValueTAG::TAG_HC8) { - flags |= CommandFlag::CMD_FLAG_HC; - } else if (tag >= DeviceValueTAG::TAG_DHW1 && tag <= DeviceValueTAG::TAG_DHW10) { - flags |= CommandFlag::CMD_FLAG_DHW; - } else if (tag >= DeviceValueTAG::TAG_HS1 && tag <= DeviceValueTAG::TAG_HS16) { - flags |= CommandFlag::CMD_FLAG_HS; - } else if (tag >= DeviceValueTAG::TAG_AHS1 && tag <= DeviceValueTAG::TAG_AHS1) { - flags |= CommandFlag::CMD_FLAG_AHS; - } else if (tag >= DeviceValueTAG::TAG_SRC1 && tag <= DeviceValueTAG::TAG_SRC16) { - flags |= CommandFlag::CMD_FLAG_SRC; - } - + uint8_t flags = CommandFlag::ADMIN_ONLY | tag_to_flag(tag); // executing commands require admin privileges // add the command to our library Command::add(device_type_, device_id_, short_name, f, fullname, flags); } } +void EMSdevice::erase_device_values() { + for (auto & dv : devicevalues_) { + if (dv.has_cmd) { + Command::erase_command(device_type_, dv.short_name, tag_to_flag(dv.tag)); + } + } + devicevalues_.clear(); +} + // single list of options void EMSdevice::register_device_value(int8_t tag, void * value_p, diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index 93675ade7..555f9d738 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -55,6 +55,7 @@ class EMSdevice { static const char * tag_to_mqtt(int8_t tag); static uint8_t decode_brand(uint8_t value); static bool export_values(uint8_t device_type, JsonObject output, const int8_t id, const uint8_t output_target); + static uint8_t tag_to_flag(const uint8_t tag); // non static functions @@ -124,6 +125,14 @@ class EMSdevice { return custom_name_; } + // set custom brand + void custom_brand(std::string const & custom_brand) { + custom_brand_ = custom_brand; + } + + std::string custom_brand() const { + return custom_brand_; + } // set device model void model(std::string const & model) { model_ = model; @@ -282,6 +291,8 @@ class EMSdevice { int16_t min, uint32_t max); + void erase_device_values(); + void register_device_value(int8_t tag, void * value_p, uint8_t type, const char * const ** options, const char * const * name, uint8_t uom, const cmd_function_p f); @@ -524,12 +535,13 @@ class EMSdevice { uint8_t device_id_ = 0; uint8_t product_id_ = 0; char version_[6]; - const char * default_name_; // the fixed name the EMS model taken from the device library - std::string custom_name_ = ""; // custom name - std::string model_ = ""; // model, taken from the 0x01 telegram. see process_deviceName() - uint8_t flags_ = 0; - uint8_t brand_ = Brand::NO_BRAND; - bool active_ = true; + const char * default_name_; // the fixed name the EMS model taken from the device library + std::string custom_name_ = ""; // custom name + std::string custom_brand_ = ""; // custom brand + std::string model_ = ""; // model, taken from the 0x01 telegram. see process_deviceName() + uint8_t flags_ = 0; + uint8_t brand_ = Brand::NO_BRAND; + bool active_ = true; bool ha_config_done_ = false; bool has_update_ = false; diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index a85dedad2..4b9dae4a4 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1310,6 +1310,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const if (product_id == 0 || (*it)->product_id() != 0) { // update only with valid product_id return true; } + (*it)->erase_device_values(); emsdevices.erase(it); // erase the old device without product_id and re detect break; } @@ -1450,6 +1451,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const if ((e.device_id == device_id) && (e.product_id == product_id)) { LOG_DEBUG("Have customizations for %s with deviceID 0x%02X productID %d", e.custom_name.c_str(), device_id, product_id); emsdevices.back()->custom_name(e.custom_name); + emsdevices.back()->custom_brand(e.custom_brand); break; } } @@ -1760,7 +1762,7 @@ void EMSESP::start() { nvs_.begin("ems-esp", false, "nvs"); // fallback to small nvs } - LOG_DEBUG("NVS device information: %s", system_.getBBQKeesGatewayDetails().isEmpty() ? "not set" : system_.getBBQKeesGatewayDetails().c_str()); + LOG_DEBUG("Fuse device information: %s", system_.getBBQKeesGatewayDetails().isEmpty() ? "not set" : system_.getBBQKeesGatewayDetails().c_str()); webSettingsService.begin(); // load EMS-ESP Application settings diff --git a/src/emsesp_version.h b/src/emsesp_version.h index b5cec000c..2cbbb958a 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.3" +#define EMSESP_APP_VERSION "3.8.2-dev.4" diff --git a/src/web/WebCustomizationService.cpp b/src/web/WebCustomizationService.cpp index d974c979d..fdb249740 100644 --- a/src/web/WebCustomizationService.cpp +++ b/src/web/WebCustomizationService.cpp @@ -76,10 +76,11 @@ void WebCustomization::read(WebCustomization & customizations, JsonObject root) // Masked entities customization and custom device name (optional) JsonArray masked_entitiesJson = root["masked_entities"].to(); for (const EntityCustomization & entityCustomization : customizations.entityCustomizations) { - JsonObject entityJson = masked_entitiesJson.add(); - entityJson["product_id"] = entityCustomization.product_id; - entityJson["device_id"] = entityCustomization.device_id; - entityJson["custom_name"] = entityCustomization.custom_name; + JsonObject entityJson = masked_entitiesJson.add(); + entityJson["product_id"] = entityCustomization.product_id; + entityJson["device_id"] = entityCustomization.device_id; + entityJson["custom_name"] = entityCustomization.custom_name; + entityJson["custom_brand"] = entityCustomization.custom_brand; // entries are in the form [optional customname] e.g "08heatingactive|heating is on" JsonArray masked_entityJson = entityJson["entity_ids"].to(); @@ -134,7 +135,7 @@ StateUpdateResult WebCustomization::update(JsonObject root, WebCustomization & c analog.type = analogJson["type"]; analog.is_system = analogJson["is_system"] | false; if (_start && analog.type == EMSESP::analogsensor_.AnalogType::DIGITAL_OUT && analog.uom > DeviceValue::DeviceValueUOM::NONE) { - analog.offset = analog.uom - 1; + analog.offset = analog.uom > 1 ? 1 : 0; } customizations.analogCustomizations.push_back(analog); // add to list } @@ -146,10 +147,11 @@ StateUpdateResult WebCustomization::update(JsonObject root, WebCustomization & c if (root["masked_entities"].is()) { auto masked_entities = root["masked_entities"].as(); for (const JsonObject masked_entity : masked_entities) { - auto emsEntity = EntityCustomization(); - emsEntity.product_id = masked_entity["product_id"]; - emsEntity.device_id = masked_entity["device_id"]; - emsEntity.custom_name = masked_entity["custom_name"] | ""; + auto emsEntity = EntityCustomization(); + emsEntity.product_id = masked_entity["product_id"]; + emsEntity.device_id = masked_entity["device_id"]; + emsEntity.custom_name = masked_entity["custom_name"] | ""; + emsEntity.custom_brand = masked_entity["custom_brand"] | ""; auto masked_entity_ids = masked_entity["entity_ids"].as(); for (const JsonVariant masked_entity_id : masked_entity_ids) { @@ -242,17 +244,19 @@ void WebCustomizationService::writeDeviceName(AsyncWebServerRequest * request, J uint8_t unique_device_id = json["id"]; // find product id and device id using the unique id if (emsdevice->unique_id() == unique_device_id) { - uint8_t product_id = emsdevice->product_id(); - uint8_t device_id = emsdevice->device_id(); - auto custom_name = json["name"].as(); + uint8_t product_id = emsdevice->product_id(); + uint8_t device_id = emsdevice->device_id(); + std::string custom_name = json["name"] | ""; + std::string custom_brand = json["brand"] | ""; // updates current record or creates a new one bool entry_exists = false; update([&](WebCustomization & settings) { for (auto it = settings.entityCustomizations.begin(); it != settings.entityCustomizations.end();) { if ((*it).product_id == product_id && (*it).device_id == device_id) { - (*it).custom_name = custom_name; - entry_exists = true; + (*it).custom_name = custom_name; + (*it).custom_brand = custom_brand; + entry_exists = true; break; } else { ++it; @@ -262,9 +266,10 @@ void WebCustomizationService::writeDeviceName(AsyncWebServerRequest * request, J // if we don't have any customization for this device, create a new entry if (!entry_exists) { EntityCustomization new_entry; - new_entry.product_id = product_id; - new_entry.device_id = device_id; - new_entry.custom_name = custom_name; + new_entry.product_id = product_id; + new_entry.device_id = device_id; + new_entry.custom_name = custom_name; + new_entry.custom_brand = custom_brand; settings.entityCustomizations.push_back(new_entry); } @@ -273,6 +278,7 @@ void WebCustomizationService::writeDeviceName(AsyncWebServerRequest * request, J // update the EMS Device record real-time emsdevice->custom_name(custom_name); + emsdevice->custom_brand(custom_brand); } } } @@ -459,10 +465,11 @@ void WebCustomizationService::load_test_data() { // EMS entities, mark some as favorites webCustomization.entityCustomizations.clear(); - auto emsEntity = EntityCustomization(); - emsEntity.product_id = 123; - emsEntity.device_id = 8; - emsEntity.custom_name = "My Custom Boiler"; + auto emsEntity = EntityCustomization(); + emsEntity.product_id = 123; + emsEntity.device_id = 8; + emsEntity.custom_name = "My Custom Boiler"; + emsEntity.custom_brand = "My Brand"; emsEntity.entity_ids.push_back("08heatingactive|is my heating on?"); emsEntity.entity_ids.push_back("08tapwateractive"); emsEntity.entity_ids.push_back("08selflowtemp|<90"); @@ -472,6 +479,7 @@ void WebCustomizationService::load_test_data() { for (const auto & emsdevice : EMSESP::emsdevices) { if (emsdevice->is_device_id(emsEntity.device_id)) { emsdevice->custom_name(emsEntity.custom_name); + emsdevice->custom_brand(emsEntity.custom_brand); break; } } diff --git a/src/web/WebCustomizationService.h b/src/web/WebCustomizationService.h index a8369d091..e8aab9c0f 100644 --- a/src/web/WebCustomizationService.h +++ b/src/web/WebCustomizationService.h @@ -63,10 +63,11 @@ class AnalogCustomization { // we use product_id and device_id to make the device unique class EntityCustomization { public: - uint8_t product_id; // device's product id - uint8_t device_id; // device's device id - std::string custom_name; // custom device name - std::vector entity_ids; // array of entity ids with masks and optional custom fullname + uint8_t product_id; // device's product id + uint8_t device_id; // device's device id + std::string custom_name; // custom device name + std::string custom_brand; // custom brand name + std::vector entity_ids; // array of entity ids with masks and optional custom fullname }; class WebCustomization { From 3463b6818de35d14d3d5473d8387bb454c36ffd9 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 12 Feb 2026 12:14:13 +0100 Subject: [PATCH 049/162] update testdata --- src/web/WebCustomizationService.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/web/WebCustomizationService.cpp b/src/web/WebCustomizationService.cpp index fdb249740..537a7ba09 100644 --- a/src/web/WebCustomizationService.cpp +++ b/src/web/WebCustomizationService.cpp @@ -469,7 +469,7 @@ void WebCustomizationService::load_test_data() { emsEntity.product_id = 123; emsEntity.device_id = 8; emsEntity.custom_name = "My Custom Boiler"; - emsEntity.custom_brand = "My Brand"; + emsEntity.custom_brand = ""; emsEntity.entity_ids.push_back("08heatingactive|is my heating on?"); emsEntity.entity_ids.push_back("08tapwateractive"); emsEntity.entity_ids.push_back("08selflowtemp|<90"); From 81cba6c0a81ac68b1ee0367736f126943ac3e331 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 12 Feb 2026 17:41:10 +0100 Subject: [PATCH 050/162] fix brand in HA --- src/core/emsdevice.cpp | 2 +- src/emsesp_version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index 0f07affdf..dc558c413 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -2160,7 +2160,7 @@ void EMSdevice::mqtt_ha_entity_config_create() { if (!dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED) && dv.has_state(DeviceValueState::DV_ACTIVE) && !dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE)) { // create_device_config is only done once for the EMS device. It can added to any entity, so we take the first - if (Mqtt::publish_ha_sensor_config_dv(dv, name().c_str(), brand_to_char(), to_string_version().c_str(), false, create_device_config)) { + if (Mqtt::publish_ha_sensor_config_dv(dv, name().c_str(), std::string(brand_to_char()).c_str(), to_string_version().c_str(), false, create_device_config)) { dv.add_state(DeviceValueState::DV_HA_CONFIG_CREATED); create_device_config = false; // only create the main config once count++; diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 2cbbb958a..1d71f4366 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.4" +#define EMSESP_APP_VERSION "3.8.2-dev.5" From 97bb03d703aaacadcb5e78c60a93babab26fbde6 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Feb 2026 12:01:10 +0100 Subject: [PATCH 051/162] add missing check for number mode change --- src/ESP32React/MqttSettingsService.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ESP32React/MqttSettingsService.cpp b/src/ESP32React/MqttSettingsService.cpp index 1c07748f0..5bcaa9562 100644 --- a/src/ESP32React/MqttSettingsService.cpp +++ b/src/ESP32React/MqttSettingsService.cpp @@ -316,6 +316,10 @@ StateUpdateResult MqttSettings::update(JsonObject root, MqttSettings & settings) changed = true; } + if (newSettings.ha_number_mode != settings.ha_number_mode) { + changed = true; + } + if (newSettings.entity_format != settings.entity_format) { changed = true; } From e303972d263b6eb7a7f3a1e7ef2282d1d803ee2a Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Feb 2026 12:01:50 +0100 Subject: [PATCH 052/162] update AsyncWebserver and pkg --- interface/pnpm-lock.yaml | 62 +++++++++++++++++++++++++--------------- platformio.ini | 2 +- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index cefa009f5..84c3fb679 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -508,13 +508,9 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.1': - resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} - engines: {node: 20 || >=22} + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1062,6 +1058,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.2: + resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} + engines: {node: 20 || >=22} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1101,6 +1101,10 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.2: + resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} + engines: {node: 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1155,8 +1159,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001769: - resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + caniuse-lite@1.0.30001770: + resolution: {integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -2077,6 +2081,10 @@ packages: resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} engines: {node: '>= 4'} + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} + javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} @@ -2247,8 +2255,8 @@ packages: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} - minimatch@10.1.2: - resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} + minimatch@10.2.0: + resolution: {integrity: sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -3432,7 +3440,7 @@ snapshots: dependencies: '@eslint/object-schema': 3.0.1 debug: 4.4.3 - minimatch: 10.1.2 + minimatch: 10.2.0 transitivePeerDependencies: - supports-color @@ -3466,11 +3474,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.1': - dependencies: - '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@9.0.0': {} '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -3805,7 +3809,7 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 10.1.2 + minimatch: 10.2.0 '@types/node@25.2.3': dependencies: @@ -3986,6 +3990,10 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.2: + dependencies: + jackspeak: 4.2.3 + base64-js@1.5.1: {} baseline-browser-mapping@2.9.19: {} @@ -4039,6 +4047,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.2: + dependencies: + balanced-match: 4.0.2 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -4046,7 +4058,7 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001769 + caniuse-lite: 1.0.30001770 electron-to-chromium: 1.5.286 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4105,7 +4117,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001769: {} + caniuse-lite@1.0.30001770: {} caw@2.0.1: dependencies: @@ -4581,7 +4593,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.1.2 + minimatch: 10.2.0 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -5116,6 +5128,10 @@ snapshots: has-to-string-tag-x: 1.4.1 is-object: 1.0.2 + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + javascript-natural-sort@0.7.1: {} jpegtran-bin@5.0.2: @@ -5274,9 +5290,9 @@ snapshots: mimic-response@1.0.1: {} - minimatch@10.1.2: + minimatch@10.2.0: dependencies: - '@isaacs/brace-expansion': 5.0.1 + brace-expansion: 5.0.2 minimatch@3.1.2: dependencies: diff --git a/platformio.ini b/platformio.ini index 19b466fdc..c0319c603 100644 --- a/platformio.ini +++ b/platformio.ini @@ -106,7 +106,7 @@ board_build.filesystem = littlefs lib_deps = bblanchon/ArduinoJson @ 7.4.2 ESP32Async/AsyncTCP @ 3.4.10 - ESP32Async/ESPAsyncWebServer @ 3.9.6 + ESP32Async/ESPAsyncWebServer @ 3.10.0 https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 From 27c471f45ff4370335851da38a0544917da7f645 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Feb 2026 12:02:36 +0100 Subject: [PATCH 053/162] set model for ems-esp devices, #2958 --- src/core/mqtt.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp index d559efcac..225c7f56e 100644 --- a/src/core/mqtt.cpp +++ b/src/core/mqtt.cpp @@ -1545,9 +1545,7 @@ void Mqtt::add_ha_dev_section(JsonObject doc, const char * name, const bool crea // add mf (manufacturer/brand), mdl (model), sw (software version) and via_device dev_json["mf"] = brand != nullptr ? brand : "EMS-ESP"; - if (model != nullptr) { - dev_json["mdl"] = model; - } + dev_json["mdl"] = model != nullptr ? model : "EMS-ESP"; dev_json["sw"] = version != nullptr ? version : "v" + std::string(EMSESP_APP_VERSION); dev_json["via_device"] = Mqtt::basename(); } From 72f08a86cfc856643af12cee24cc3ff8e42106ca Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Feb 2026 12:03:07 +0100 Subject: [PATCH 054/162] fix SRC climate, #2960 --- src/core/emsdevice.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index dc558c413..12b594d41 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -2135,7 +2135,7 @@ void EMSdevice::mqtt_ha_entity_config_create() { if (needs_update) { const char * const ** mode_options = nullptr; - for (auto & d : devicevalues_) { + for (const auto & d : devicevalues_) { // make sure mode in same circuit is DeviceValueType::ENUM if ((d.tag == dv.tag) && (d.type == DeviceValueType::ENUM) && !strcmp(d.short_name, FL_(mode)[0]) && (d.options_size > 0)) { // get options @@ -2167,19 +2167,25 @@ void EMSdevice::mqtt_ha_entity_config_create() { } // SRC thermostats mapped to connect/src1/... always contains mode, seltemp, currtemp - if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(mode)[0])) { - // add icon if we have one - const char * icon = nullptr; - for (auto & d : devicevalues_) { - if (d.tag == dv.tag && !strcmp(d.short_name, FL_(icon)[0]) && (dv.type == DeviceValueType::ENUM)) { + if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(seltemp)[0])) { + // add modes and icon if we have one + const char * icon = nullptr; + const char * const ** mode_options = nullptr; + for (const auto & d : devicevalues_) { + if ((d.tag != dv.tag) || (d.type != DeviceValueType::ENUM)) { + continue; + } + if (!strcmp(d.short_name, FL_(mode)[0]) && (d.options_size > 0)) { + mode_options = d.options; + } + if (!strcmp(d.short_name, FL_(icon)[0])) { uint8_t val = *(uint8_t *)(d.value_p); if (val != 0 && val < d.options_size) { icon = d.options[val][0]; } - break; } } - Mqtt::publish_ha_climate_config(dv, true, dv.options, false, icon); + Mqtt::publish_ha_climate_config(dv, true, mode_options, false, icon); count++; } From a811670c5a2fa48b8b92d2618c2a1f228504f016 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Feb 2026 12:03:33 +0100 Subject: [PATCH 055/162] 3.8.2-dev.6, changelog --- CHANGELOG_LATEST.md | 3 ++- src/emsesp_version.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 232b748fb..c537e0dc4 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -8,10 +8,11 @@ For more details go to [emsesp.org](https://emsesp.org/). - comfortpoint for BC400 [#2935](https://github.com/emsesp/EMS-ESP32/issues/2935) - customize device brand [#2784](https://github.com/emsesp/EMS-ESP32/issues/2784) +- set model for ems-esp devices temperature, analog, etc. [#2958](https://github.com/emsesp/EMS-ESP32/discussions/2958) ## Fixed -- SRC climate creation [#2936](https://github.com/emsesp/EMS-ESP32/issues/2936) +- SRC climate creation [#2936](https://github.com/emsesp/EMS-ESP32/issues/2936) and [#2960](https://github.com/emsesp/EMS-ESP32/issues/2960) ## Changed diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 1d71f4366..3945693dd 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.5" +#define EMSESP_APP_VERSION "3.8.2-dev.6" From 148a721e173928351b85cb03c87f12dc35babaf5 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Feb 2026 16:49:21 +0100 Subject: [PATCH 056/162] read connect seltemp after mode/icon to create HA-climate --- src/devices/connect.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp index 4a96c0700..256d26d3f 100644 --- a/src/devices/connect.cpp +++ b/src/devices/connect.cpp @@ -129,15 +129,20 @@ void Connect::process_roomThermostat(std::shared_ptr telegram) { } has_update(telegram, rc->temp_, 0); has_update(telegram, rc->humidity_, 2); // could show -3 if not set - has_update(telegram, rc->seltemp_, 3); + // make sure we have read mode and icon, needed for ha climate + if (!Mqtt::ha_enabled() || (Helpers::hasValue(rc->mode_) && Helpers::hasValue(rc->icon_))) { + has_update(telegram, rc->seltemp_, 3); + } // calculate dew temperature - const float k2 = 17.62; - const float k3 = 243.12; - const float t = (float)rc->temp_ / 10; - const float h = (float)rc->humidity_ / 100; - int16_t dt = (10 * k3 * (((k2 * t) / (k3 + t)) + log(h)) / (((k2 * k3) / (k3 + t)) - log(h))); - has_update(rc->dewtemp_, dt); + if (rc->humidity_ >= 0 && rc->humidity_ <= 100) { + const float k2 = 17.62; + const float k3 = 243.12; + const float t = (float)rc->temp_ / 10; + const float h = (float)rc->humidity_ / 100; + int16_t dt = (10 * k3 * (((k2 * t) / (k3 + t)) + log(h)) / (((k2 * k3) / (k3 + t)) - log(h))); + has_update(rc->dewtemp_, dt); + } } // gateway(0x48) W gateway(0x50), ?(0x0B42), data: 01 // icon in offset 0 From 421da246edd143231af0b2c08c6058b8c9ff4262 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 16 Feb 2026 07:51:10 +0100 Subject: [PATCH 057/162] fix SRC seltemp offset for auto mode #2960 --- src/devices/connect.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp index 256d26d3f..2ae873c3c 100644 --- a/src/devices/connect.cpp +++ b/src/devices/connect.cpp @@ -226,8 +226,9 @@ bool Connect::set_seltemp(const char * value, const int8_t id) { } float v; if (Helpers::value2float(value, v)) { - // write_command(0xBB5 + rc->room(), rc->mode_ == 2 ? 1 : 3, v == -1 ? 0xFF : uint8_t(v * 2)); - write_command(0xBB5 + rc->room(), rc->mode_ == 0 ? 1 : 3, v == -1 ? 0xFF : uint8_t(v * 2)); + // depends on mode, auto (2 for enum_mode2, 0 for enum_mode8) set in offset 1 + write_command(0xBB5 + rc->room(), rc->mode_ == 2 ? 1 : 3, v == -1 ? 0xFF : uint8_t(v * 2)); + // write_command(0xBB5 + rc->room(), rc->mode_ == 0 ? 1 : 3, v == -1 ? 0xFF : uint8_t(v * 2)); return true; } return false; From ced7051ce75ca430e046b6844e2fab3f55a6ac86 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 16 Feb 2026 12:05:45 +0100 Subject: [PATCH 058/162] add prometheus metrics for temperaturesensors --- CHANGELOG_LATEST.md | 1 + src/core/temperaturesensor.cpp | 24 ++++++++++++++++++++++++ src/core/temperaturesensor.h | 2 ++ 3 files changed, 27 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index c537e0dc4..626529fca 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -9,6 +9,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - comfortpoint for BC400 [#2935](https://github.com/emsesp/EMS-ESP32/issues/2935) - customize device brand [#2784](https://github.com/emsesp/EMS-ESP32/issues/2784) - set model for ems-esp devices temperature, analog, etc. [#2958](https://github.com/emsesp/EMS-ESP32/discussions/2958) +- prometheus metrics for temperaturesensors [#2962](https://github.com/emsesp/EMS-ESP32/issues/2962) ## Fixed diff --git a/src/core/temperaturesensor.cpp b/src/core/temperaturesensor.cpp index 83624450b..afcfb4673 100644 --- a/src/core/temperaturesensor.cpp +++ b/src/core/temperaturesensor.cpp @@ -400,6 +400,15 @@ bool TemperatureSensor::get_value_info(JsonObject output, const char * cmd, cons return true; } + if (!strcmp(cmd, F_(metrics))) { + std::string metrics = get_metrics_prometheus(); + if (!metrics.empty()) { + output["api_data"] = metrics; + return true; + } + return false; + } + // this is for a specific sensor const char * attribute_s = Command::get_attribute(cmd); @@ -414,6 +423,21 @@ bool TemperatureSensor::get_value_info(JsonObject output, const char * cmd, cons return false; // not found } +// generate Prometheus metrics format from temperature values +std::string TemperatureSensor::get_metrics_prometheus() { + std::string result; + result.reserve(sensors_.size() * 120); + char val[10]; + for (auto & sensor : sensors_) { + result += (std::string) "# HELP emsesp_" + sensor.name() + " " + sensor.name() + ", " + + EMSdevice::uom_to_string(EMSESP::system_.fahrenheit() ? DeviceValueUOM::FAHRENHEIT : DeviceValueUOM::DEGREES) + ", readable, visible\n"; + result += (std::string) "# TYPE emsesp_" + sensor.name() + " gauge\n"; + result += + (std::string) "emsesp_" + sensor.name() + " " + Helpers::render_value(val, sensor.temperature_c, 10, EMSESP::system_.fahrenheit() ? 2 : 0) + "\n"; + } + return result; +} + // note we don't add the device and state classes here, as we do in the custom entity service void TemperatureSensor::get_value_json(JsonObject output, const Sensor & sensor) { output["id"] = sensor.id(); diff --git a/src/core/temperaturesensor.h b/src/core/temperaturesensor.h index 14c53a5e5..a4aa63dfe 100644 --- a/src/core/temperaturesensor.h +++ b/src/core/temperaturesensor.h @@ -96,6 +96,8 @@ class TemperatureSensor { bool updated_values(); bool get_value_info(JsonObject output, const char * cmd, const int8_t id = -1); + std::string get_metrics_prometheus(); + // return back reference to the sensor list, used by other classes std::vector> sensors() const { return sensors_; From 4326fb931b6f1ffc01df65d8122ec18b42903240 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 16 Feb 2026 15:56:23 +0100 Subject: [PATCH 059/162] add prometheus metrics for analog/scheduler/custom #2962 --- CHANGELOG_LATEST.md | 2 +- src/core/analogsensor.cpp | 38 ++++++++++++++++++++ src/core/analogsensor.h | 1 + src/emsesp_version.h | 2 +- src/web/WebCustomEntityService.cpp | 57 ++++++++++++++++++++++++++++++ src/web/WebCustomEntityService.h | 2 ++ src/web/WebSchedulerService.cpp | 49 +++++++++++++++++-------- src/web/WebSchedulerService.h | 2 ++ 8 files changed, 136 insertions(+), 17 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 626529fca..305f92ea2 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -9,7 +9,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - comfortpoint for BC400 [#2935](https://github.com/emsesp/EMS-ESP32/issues/2935) - customize device brand [#2784](https://github.com/emsesp/EMS-ESP32/issues/2784) - set model for ems-esp devices temperature, analog, etc. [#2958](https://github.com/emsesp/EMS-ESP32/discussions/2958) -- prometheus metrics for temperaturesensors [#2962](https://github.com/emsesp/EMS-ESP32/issues/2962) +- prometheus metrics for temperature/analog/scheduler/custom [#2962](https://github.com/emsesp/EMS-ESP32/issues/2962) ## Fixed diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp index 84b803679..4147e5c34 100644 --- a/src/core/analogsensor.cpp +++ b/src/core/analogsensor.cpp @@ -852,6 +852,15 @@ bool AnalogSensor::get_value_info(JsonObject output, const char * cmd, const int return true; } + if (!strcmp(cmd, F_(metrics))) { + std::string metrics = get_metrics_prometheus(); + if (!metrics.empty()) { + output["api_data"] = metrics; + return true; + } + return false; + } + // this is for a specific sensor, return the value const char * attribute_s = Command::get_attribute(cmd); @@ -866,6 +875,35 @@ bool AnalogSensor::get_value_info(JsonObject output, const char * cmd, const int return false; // not found } +// generate Prometheus metrics format from analog values +std::string AnalogSensor::get_metrics_prometheus() { + std::string result; + result.reserve(sensors_.size() * 140); + char val[10]; + for (auto & sensor : sensors_) { + result += (std::string) "# HELP emsesp_" + sensor.name() + " " + sensor.name(); + if (sensor.type() != AnalogType::DIGITAL_OUT && sensor.type() != AnalogType::DIGITAL_IN) { + result += (std::string) ", " + EMSdevice::uom_to_string(sensor.uom()); + } else { + result += (std::string) ", boolean"; + } + result += (std::string) ", readable, visible"; + if (sensor.type() == AnalogType::COUNTER || sensor.type() == AnalogType::RGB || sensor.type() == AnalogType::PULSE + || (sensor.type() >= AnalogType::DIGITAL_OUT && sensor.type() <= AnalogType::PWM_2) + || (sensor.type() >= AnalogType::CNT_0 && sensor.type() <= AnalogType::CNT_2)) { + result += (std::string) ", writable"; + } + result += (std::string) "\n# TYPE emsesp_" + sensor.name() + " gauge\n"; + result += (std::string) "emsesp_" + sensor.name() + " "; + if (sensor.type() != AnalogType::DIGITAL_OUT && sensor.type() != AnalogType::DIGITAL_IN) { + result += (std::string) Helpers::render_value(val, sensor.value(), 2) + "\n"; + } else { + result += (std::string) (sensor.value() == 0 ? "0\n" : "1\n"); + } + } + return result; +} + // note we don't add the device and state classes here, as we do in the custom entity service void AnalogSensor::get_value_json(JsonObject output, const Sensor & sensor) { output["name"] = (const char *)sensor.name(); diff --git a/src/core/analogsensor.h b/src/core/analogsensor.h index f466adb75..65e200662 100644 --- a/src/core/analogsensor.h +++ b/src/core/analogsensor.h @@ -177,6 +177,7 @@ class AnalogSensor { bool update(uint8_t gpio, const char * name, double offset, double factor, uint8_t uom, int8_t type, bool deleted, bool is_system); bool get_value_info(JsonObject output, const char * cmd, const int8_t id = -1); void store_counters(); + std::string get_metrics_prometheus(); static std::vector exclude_types() { return exclude_types_; } diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 3945693dd..73961265b 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.6" +#define EMSESP_APP_VERSION "3.8.2-dev.7" diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index 3e4356318..9de8f3da8 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -343,6 +343,15 @@ bool WebCustomEntityService::get_value_info(JsonObject output, const char * cmd) return true; } + if (!strcmp(cmd, F_(metrics))) { + std::string metrics = get_metrics_prometheus(); + if (!metrics.empty()) { + output["api_data"] = metrics; + return true; + } + return false; + } + // specific value info const char * attribute_s = Command::get_attribute(cmd); for (auto const & entity : *customEntityItems_) { @@ -354,6 +363,54 @@ bool WebCustomEntityService::get_value_info(JsonObject output, const char * cmd) return false; // not found } +// generate Prometheus metrics format from custom entities +std::string WebCustomEntityService::get_metrics_prometheus() { + std::string result; + result.reserve(customEntityItems_->size() * 140); + char val[10]; + for (CustomEntityItem & entity : *customEntityItems_) { + if (entity.hide || entity.name[0] == '\0') { + continue; + } + result += (std::string) "# HELP emsesp_" + entity.name + " " + entity.name; + if (entity.uom != 0) { + result += (std::string) ", " + EMSdevice::uom_to_string(entity.uom); + } + result += (std::string) ", readable, visible" + (entity.writeable ? ", writable\n" : "\n"); + result += (std::string) "# TYPE emsesp_" + entity.name + " gauge\n"; + result += (std::string) "emsesp_" + entity.name + " "; + switch (entity.value_type) { + case DeviceValueType::BOOL: + result += (std::string)(entity.value == 0 ? "0" : "1"); + break; + case DeviceValueType::INT8: + result += (std::string)Helpers::render_value(val, entity.factor * (int8_t)entity.value, 2); + break; + case DeviceValueType::UINT8: + result += (std::string)Helpers::render_value(val, entity.factor * (uint8_t)entity.value, 2); + break; + case DeviceValueType::INT16: + result += (std::string)Helpers::render_value(val, entity.factor * (int16_t)entity.value, 2); + break; + case DeviceValueType::UINT16: + result += (std::string)Helpers::render_value(val, entity.factor * (uint16_t)entity.value, 2); + break; + case DeviceValueType::UINT24: + case DeviceValueType::TIME: + case DeviceValueType::UINT32: + result += (std::string)Helpers::render_value(val, entity.factor * entity.value, 2); + break; + default: + if (entity.data.length() > 0) { + result += entity.data; + } + break; + } + result += (std::string) "\n"; + } + return result; +} + // build the json for specific entity void WebCustomEntityService::get_value_json(JsonObject output, CustomEntityItem const & entity) { output["name"] = (const char *)entity.name; diff --git a/src/web/WebCustomEntityService.h b/src/web/WebCustomEntityService.h index d96254846..4cfec1ac4 100644 --- a/src/web/WebCustomEntityService.h +++ b/src/web/WebCustomEntityService.h @@ -68,6 +68,8 @@ class WebCustomEntityService : public StatefulService { void show_values(JsonObject output); void generate_value_web(JsonObject output, const bool is_dashboard = false); + std::string get_metrics_prometheus(); + uint8_t count_entities(); void ha_reset() { ha_configdone_ = false; diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index b92930357..e708c94e7 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -102,7 +102,7 @@ StateUpdateResult WebScheduler::update(JsonObject root, WebScheduler & webSchedu if (webScheduler.scheduleItems.back().name[0] != '\0') { char key[sizeof(webScheduler.scheduleItems.back().name) + 2]; snprintf(key, sizeof(key), "s:%s", webScheduler.scheduleItems.back().name); - if (EMSESP::nvs_.isKey(key)) { + if (EMSESP::nvs_.isKey(key) && webScheduler.scheduleItems.back().flags != SCHEDULEFLAG_SCHEDULE_IMMEDIATE) { webScheduler.scheduleItems.back().active = EMSESP::nvs_.getBool(key); } Command::add( @@ -138,20 +138,11 @@ bool WebSchedulerService::command_setvalue(const char * value, const int8_t id, publish(); } // save new state to nvs #2946 - char key[sizeof(scheduleItem.name) + 2]; - snprintf(key, sizeof(key), "s:%s", scheduleItem.name); - EMSESP::nvs_.putBool(key, scheduleItem.active); - /* save to filesystem - EMSESP::webSchedulerService.update([&](WebScheduler & webSchedule) { - for (auto si : webSchedule.scheduleItems) { - if (!strcmp(si.name, scheduleItem.name)) { - si.active = scheduleItem.active; - break; - } - } - return StateUpdateResult::CHANGED; - }); - */ + if (scheduleItem.flags != SCHEDULEFLAG_SCHEDULE_IMMEDIATE) { + char key[sizeof(scheduleItem.name) + 2]; + snprintf(key, sizeof(key), "s:%s", scheduleItem.name); + EMSESP::nvs_.putBool(key, scheduleItem.active); + } return true; } } @@ -184,6 +175,15 @@ bool WebSchedulerService::get_value_info(JsonObject output, const char * cmd) { return true; } + if (!strcmp(cmd, F_(metrics))) { + std::string metrics = get_metrics_prometheus(); + if (!metrics.empty()) { + output["api_data"] = metrics; + return true; + } + return false; + } + const char * attribute_s = Command::get_attribute(cmd); for (const ScheduleItem & scheduleItem : *scheduleItems_) { if (Helpers::toLower(scheduleItem.name) == cmd) { @@ -195,6 +195,21 @@ bool WebSchedulerService::get_value_info(JsonObject output, const char * cmd) { return false; // not found } +// generate Prometheus metrics format from scheduler values +std::string WebSchedulerService::get_metrics_prometheus() { + std::string result; + result.reserve(scheduleItems_->size() * 140); + for (const ScheduleItem & scheduleItem : *scheduleItems_) { + if (scheduleItem.name[0] == '\0') { + continue; + } + result += (std::string) "# HELP emsesp_" + scheduleItem.name + " " + scheduleItem.name + ", boolean, readable, visible, writable\n"; + result += (std::string) "# TYPE emsesp_" + scheduleItem.name + " gauge\n"; + result += (std::string) "emsesp_" + scheduleItem.name + " " + (scheduleItem.active ? "1\n" : "0\n"); + } + return result; +} + // build the json for specific entity void WebSchedulerService::get_value_json(JsonObject output, const ScheduleItem & scheduleItem) { output["name"] = (const char *)scheduleItem.name; @@ -483,6 +498,10 @@ void WebSchedulerService::loop() { if (scheduleItem.active && scheduleItem.flags == SCHEDULEFLAG_SCHEDULE_IMMEDIATE) { command(scheduleItem.name, scheduleItem.cmd.c_str(), compute(scheduleItem.value.c_str())); scheduleItem.active = false; + publish_single(scheduleItem.name, false); + if (EMSESP::mqtt_.get_publish_onchange(0)) { + publish(); + } } } diff --git a/src/web/WebSchedulerService.h b/src/web/WebSchedulerService.h index 8a1bbbf55..0d1ad2fa6 100644 --- a/src/web/WebSchedulerService.h +++ b/src/web/WebSchedulerService.h @@ -88,6 +88,8 @@ class WebSchedulerService : public StatefulService { uint8_t count_entities(bool cmd_only = false); bool onChange(const char * cmd); + std::string get_metrics_prometheus(); + std::string raw_value; std::string computed_value; From ac3e5c793c3dce50c9e84d1051f5ad26d1ed6e9b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 17 Feb 2026 10:09:22 +0100 Subject: [PATCH 060/162] fix typo for SRC ha-climate creation --- src/core/emsdevice.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index 12b594d41..4296e599c 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -912,7 +912,7 @@ void EMSdevice::publish_value(void * value_p) const { // looks up the UOM for a given key from the device value table std::string EMSdevice::get_value_uom(const std::string & shortname) const { for (const auto & dv : devicevalues_) { - if ((!dv.has_state(DeviceValueState::DV_WEB_EXCLUDE)) && (dv.short_name == shortname)) { + if ((!dv.has_state(DeviceValueState::DV_WEB_EXCLUDE)) && !strcmp(dv.short_name, shortname.c_str())) { // ignore TIME since "minutes" is already added to the string value if ((dv.uom == DeviceValueUOM::NONE) || (dv.uom == DeviceValueUOM::MINUTES)) { break; @@ -1282,7 +1282,7 @@ void EMSdevice::setCustomizationEntity(const std::string & entity_id) { // set the min / max dv.set_custom_minmax(); - if (Mqtt::ha_enabled() && dv.short_name == FL_(seltemp)[0] && (min != dv.min || max != dv.max)) { + if (Mqtt::ha_enabled() && dv.tag <= DeviceValueTAG::TAG_HC8 && !strcmp(dv.short_name, FL_(selRoomTemp)[0]) && (min != dv.min || max != dv.max)) { set_climate_minmax(dv.tag, dv.min, dv.max); } @@ -2166,8 +2166,8 @@ void EMSdevice::mqtt_ha_entity_config_create() { count++; } - // SRC thermostats mapped to connect/src1/... always contains mode, seltemp, currtemp - if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(seltemp)[0])) { + // SRC thermostats mapped to connect/src1/... always contains mode, selRoomTemp, currtemp + if (dv.tag >= DeviceValueTAG::TAG_SRC1 && dv.tag <= DeviceValueTAG::TAG_SRC16 && !strcmp(dv.short_name, FL_(selRoomTemp)[0])) { // add modes and icon if we have one const char * icon = nullptr; const char * const ** mode_options = nullptr; From 5879ce40902694e52446149e68527770fc8d9214 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Feb 2026 08:14:47 +0100 Subject: [PATCH 061/162] fix SRC mode setting from HA #2960 --- src/devices/connect.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp index 2ae873c3c..a3e22af38 100644 --- a/src/devices/connect.cpp +++ b/src/devices/connect.cpp @@ -211,12 +211,13 @@ bool Connect::set_mode(const char * value, const int8_t id) { return false; } uint8_t v; - if (Helpers::value2enum(value, v, FL_(enum_mode2), {3, 1, 0})) { - // if (Helpers::value2enum(value, v, FL_(enum_mode8))) { - write_command(0xBB5 + rc->room(), 0, v); // no validate, mode change is broadcasted - return true; + if (!Helpers::value2enum(value, v, FL_(enum_mode2), {3, 1, 0})) { + if (!Helpers::value2enum(value, v, FL_(enum_mode_ha), {3, 1, 0})) { + return false; + } } - return false; + write_command(0xBB5 + rc->room(), 0, v); // no validate, mode change is broadcasted + return true; } bool Connect::set_seltemp(const char * value, const int8_t id) { From 5c4aaa451011ae7b935da74c8957947a01af6143 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Feb 2026 09:56:08 +0100 Subject: [PATCH 062/162] add pumpkick #2965, dev.8 --- CHANGELOG_LATEST.md | 1 + src/core/locale_translations.h | 4 +++ src/devices/boiler.cpp | 54 ++++++++++++++++++++++++++++++++++ src/devices/boiler.h | 8 +++++ src/emsesp_version.h | 2 +- 5 files changed, 68 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 305f92ea2..9adde9275 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -10,6 +10,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - customize device brand [#2784](https://github.com/emsesp/EMS-ESP32/issues/2784) - set model for ems-esp devices temperature, analog, etc. [#2958](https://github.com/emsesp/EMS-ESP32/discussions/2958) - prometheus metrics for temperature/analog/scheduler/custom [#2962](https://github.com/emsesp/EMS-ESP32/issues/2962) +- boiler pumpkick [#2965](https://github.com/emsesp/EMS-ESP32/discussions/2965) ## Fixed diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index c7fee26d3..faf364abc 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -424,6 +424,10 @@ MAKE_TRANSLATION(pumpOnTemp, "pumpontemp", "pump logic temperature", "Pumpenlogi MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "Fördelare", "sprzęgło hydrauliczne", "lav tap header", "bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.", "nízkostratová hlavica", "hydraulický oddělovač") MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "Värmeblock", "blok grzewczy", "varmeblokk", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.", "vykurovací blok", "blok topení") +MAKE_TRANSLATION(pumpKickHour, "pumpkickhour", "pump kick hour", "Stunde Pumpkick") +MAKE_TRANSLATION(pumpKickDay, "pumpkickday", "pump kick day", "Tag Pumpkick") +MAKE_TRANSLATION(pumpKickDelay, "pumpkickdelay", "pump kick delay", "Pause vor Pumpkick") + MAKE_TRANSLATION(curveOn, "curveon", "heatingcurve on", "Heizkurve an", "stookkromme aan", "Värmekurva På", "krzywa grzewcza włączona", "varmekurve på", "courbe de chauffage activée", "ısıtma eğrisi açık", "curva di riscaldamento attiva", "vykurovacia krivka zapnutá", "topná křivka zapnutá") MAKE_TRANSLATION(curveBase, "curvebase", "heatingcurve base", "Heizkurve Basis", "stookkromme basis", "Värmekurva Bas", "podstawa krzywej grzewczej", "varmekurve basis", "base de courbe de chauffage", "ısıtma eğrisi tabanı", "base curva di riscaldamento", "základňa vykurovacej krivky", "základ topné křivky") MAKE_TRANSLATION(curveEnd, "curveend", "heatingcurve end", "Heizkurve Ende", "stookkromme einde", "Värmekurva Slut", "koniec krzywej grzewczej", "varmekurve slutt", "fin de courbe de chauffage", "ısıtma eğrisi sonu", "fine curva di riscaldamento", "koniec vykurovacej krivky", "konec topné křivky") diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 1c6157cf9..94cc96969 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -65,6 +65,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_telegram_type(0xE6, "UBAParametersPlus", true, MAKE_PF_CB(process_UBAParametersPlus)); register_telegram_type(0xE9, "UBAMonitorWWPlus", false, MAKE_PF_CB(process_UBAMonitorWWPlus)); register_telegram_type(0xEA, "UBAParameterWWPlus", true, MAKE_PF_CB(process_UBAParameterWWPlus)); + register_telegram_type(0xEB, "PumpKick", true, MAKE_PF_CB(process_PumpKick)); register_telegram_type(0x28, "WeatherComp", true, MAKE_PF_CB(process_WeatherComp)); register_telegram_type(0x2E0, "UBASetPoints", false, MAKE_PF_CB(process_UBASetPoints2)); register_telegram_type(0x2CC, "HPPressure", true, MAKE_PF_CB(process_HpPressure)); @@ -355,6 +356,24 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pc1On_, DeviceValueType::BOOL, FL_(pc1On), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pc1Rate_, DeviceValueType::UINT8, FL_(pc1Rate), DeviceValueUOM::PERCENT); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &pumpKickHour_, DeviceValueType::UINT8, FL_(pumpKickHour), DeviceValueUOM::HOURS, MAKE_CF_CB(set_pumpKickHour), 0, 23); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &pumpKickDay_, + DeviceValueType::ENUM, + FL_(enum_dayOfWeek), + FL_(pumpKickDay), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_pumpKickDay)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &pumpKickDelay_, + DeviceValueType::UINT16, + FL_(pumpKickDelay), + DeviceValueUOM::MINUTES, + MAKE_CF_CB(set_pumpKickDelay), + 0, + 32767); + /* * Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat * thermostat always overwrites settings in boiler @@ -2246,6 +2265,13 @@ void Boiler::process_HpPowerLimit(std::shared_ptr telegram) { has_update(telegram, hpPowerLimit_, 0); } +// 0x0EB +void Boiler::process_PumpKick(std::shared_ptr telegram) { + has_update(telegram, pumpKickHour_, 0); + has_enumupdate(telegram, pumpKickDay_, 1, 1); // 1-mo, ... + has_update(telegram, pumpKickDelay_, 2); +} + // Boiler(0x08) -B-> All(0x00), ?(0x2E), data: 00 00 1C CE 00 00 05 E8 00 00 00 18 00 00 00 02 void Boiler::process_Meters(std::shared_ptr telegram) { has_update(telegram, gasMeterHeat_, 0); @@ -3628,4 +3654,32 @@ bool Boiler::set_shutdown(const char * value, const int8_t id) { return false; } +bool Boiler::set_pumpKickHour(const char * value, const int8_t id) { + int v; + if (Helpers::value2number(value, v, 0, 23)) { + write_command(0xEB, 0, v, 0xEB); + return true; + } + return false; +} + +bool Boiler::set_pumpKickDay(const char * value, const int8_t id) { + uint8_t v; + if (Helpers::value2enum(value, v, FL_(enum_dayOfWeek))) { + write_command(0xEB, 1, v + 1, 0xEB); + return true; + } + return false; +} + +bool Boiler::set_pumpKickDelay(const char * value, const int8_t id) { + int v; + if (Helpers::value2number(value, v, 0, 32767)) { + uint8_t data[2] = {(uint8_t)(v >> 8), (uint8_t)v}; + write_command(0xEB, 2, data, 2, 0xEB); + return true; + } + return false; +} + } // namespace emsesp diff --git a/src/devices/boiler.h b/src/devices/boiler.h index becd74bb2..c0b7dab9b 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -319,6 +319,9 @@ class Boiler : public EMSdevice { int16_t pc1Flow_; uint8_t pc1Rate_; uint8_t pc1On_; + uint8_t pumpKickHour_; // hour + uint8_t pumpKickDay_; // day 1=mo + uint16_t pumpKickDelay_; // delay minutes after pump running // HIU // uint16_t cwFlowRate_; // cold water flow rate *10 @@ -397,6 +400,7 @@ class Boiler : public EMSdevice { void process_HpFan(std::shared_ptr telegram); void process_HpPower2(std::shared_ptr telegram); void process_HpPowerLimit(std::shared_ptr telegram); + void process_PumpKick(std::shared_ptr telegram); void process_Meters(std::shared_ptr telegram); void process_Energy(std::shared_ptr telegram); @@ -602,6 +606,10 @@ class Boiler : public EMSdevice { bool set_nrgHeat(const char * value, const int8_t id); bool set_nrgWw(const char * value, const int8_t id); bool set_nomPower(const char * value, const int8_t id); + + bool set_pumpKickHour(const char * value, const int8_t id); + bool set_pumpKickDay(const char * value, const int8_t id); + bool set_pumpKickDelay(const char * value, const int8_t id); }; } // namespace emsesp diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 73961265b..5ac15a43a 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.7" +#define EMSESP_APP_VERSION "3.8.2-dev.8" From 96a7ea8a02883af20b46211c50014cb414e13173 Mon Sep 17 00:00:00 2001 From: mrkev-gh Date: Sat, 28 Feb 2026 11:30:11 +0100 Subject: [PATCH 063/162] fix allowed pins for S32S3 without PSRAM Some S32S3 do not have PSRAM (e.g. ESP32-S3FN8) and use those GPIO pins --- src/core/system.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index f523c68b7..a2f37065d 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -2952,7 +2952,6 @@ void System::set_valid_system_gpios() { // excluded: // GPIO3, GPIO45 - GPIO46 = strapping pins // GPIO26 - GPIO32 = SPI flash and PSRAM and not recommended - // GPIO33 - GPIO37 = Octal flash/PSRAM // GPIO19 - GPIO20 = USB-JTAG // GPIO22 - GPIO25 = don't exist // @@ -2960,7 +2959,12 @@ void System::set_valid_system_gpios() { // GPIO11 - GPIO19 = ADC analog input only pins // GPIO47 - GPIO48 = valid on a Wemos S3 // GPIO8 = used by Liligo S3 board profile for Rx - valid_system_gpios_ = string_range_to_vector("0-48", "3, 45-46, 26-32, 33-37, 19-20, 22-25"); + if (ESP.getPsramSize() > 0) { + // GPIO33 - GPIO37 = Octal flash/PSRAM + valid_system_gpios_ = string_range_to_vector("0-48", "3, 45-46, 26-32, 33-37, 19-20, 22-25"); + } else { + valid_system_gpios_ = string_range_to_vector("0-48", "3, 45-46, 26-32, 19-20, 22-25"); + } #elif CONFIG_IDF_TARGET_ESP32 // https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/gpio.html From 92e26333428a611d5e9c8b44707b72ea16e70c35 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 7 Mar 2026 11:42:27 +0100 Subject: [PATCH 064/162] typo --- src/devices/thermostat.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index bd5ad579a..75ca7c38c 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -50,7 +50,7 @@ class Thermostat : public EMSdevice { uint8_t daymidtemp; uint8_t nighttemp; uint8_t holidaytemp; - uint8_t heatingtype; // type of heating: 1 radiator, 2 convectors, 3 floors, 4 room supply + uint8_t heatingtype; // type of heating: 1 radiator, 2 convectors, 3 floor, 4 room supply uint8_t targetflowtemp; uint8_t summertemp; int8_t nofrosttemp; // signed -20°C to +10°C From 64d17d7c655246c9f3a3a3a8967a1e770a2b5668 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 7 Mar 2026 11:43:12 +0100 Subject: [PATCH 065/162] Test for minflowtemp --- src/devices/thermostat.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index a9ab776ae..011cb8403 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1250,9 +1250,16 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { if (hc->heatingtype != 3) { has_update(telegram, hc->designtemp, 4); - has_update(telegram, hc->minflowtemp, model() == EMSdevice::EMS_DEVICE_FLAG_BC400 ? 13 : 8); } else { has_update(telegram, hc->designtemp, 5); + } + + // minflowtemp could be in 8 or 13, see #2879 and #2969 + // for testing! + uint8_t minflowtemp = 0; + if (telegram->read_value(minflowtemp, 13) && minflowtemp > 0 && model() == EMSdevice::EMS_DEVICE_FLAG_BC400 && hc->heatingtype != 3) { + has_update(hc->minflowtemp, minflowtemp); + } else { has_update(telegram, hc->minflowtemp, 8); } From 2037bc3a10958c1bcba669c2c1adf17aa9bab3a3 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 7 Mar 2026 11:46:33 +0100 Subject: [PATCH 066/162] add reset of HP errors #2933, dev9 --- CHANGELOG_LATEST.md | 1 + src/core/locale_common.h | 2 +- src/core/locale_translations.h | 3 +++ src/devices/boiler.cpp | 27 ++++++++++++++------------- src/emsesp_version.h | 2 +- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 9adde9275..e091e1ece 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -11,6 +11,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - set model for ems-esp devices temperature, analog, etc. [#2958](https://github.com/emsesp/EMS-ESP32/discussions/2958) - prometheus metrics for temperature/analog/scheduler/custom [#2962](https://github.com/emsesp/EMS-ESP32/issues/2962) - boiler pumpkick [#2965](https://github.com/emsesp/EMS-ESP32/discussions/2965) +- heatpump reset [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) ## Fixed diff --git a/src/core/locale_common.h b/src/core/locale_common.h index 2b9222f69..2b769dd2c 100644 --- a/src/core/locale_common.h +++ b/src/core/locale_common.h @@ -303,7 +303,7 @@ MAKE_ENUM(enum_comfort, FL_(hot), FL_(eco), FL_(intelligent)) MAKE_ENUM(enum_comfort1, FL_(high_comfort), FL_(eco)) MAKE_ENUM(enum_comfort2, FL_(eco), FL_(high_comfort)) MAKE_ENUM(enum_flow, FL_(off), FL_(flow), FL_(bufferedflow), FL_(buffer), FL_(layeredbuffer)) -MAKE_ENUM(enum_reset, FL_(dash), FL_(maintenance), FL_(error), FL_(history), FL_(message)) +MAKE_ENUM(enum_reset, FL_(dash), FL_(maintenance), FL_(error), FL_(history), FL_(message), FL_(hp_error), FL_(burn_starts), FL_(factory)) MAKE_ENUM(enum_maxHeat, FL_(0kW), FL_(2kW), FL_(3kW), FL_(4kW), FL_(6kW), FL_(9kW)) MAKE_ENUM(enum_maxHeat1, FL_(0kW), FL_(3kW), FL_(6kW), FL_(9kW)) MAKE_ENUM(enum_maxHeat2, FL_(3kW), FL_(6kW), FL_(9kW)) diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index faf364abc..4911aceb4 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -197,6 +197,9 @@ MAKE_WORD_TRANSLATION(lower, "lower", "niedriger", "lager", "lägre", "mniejszy" MAKE_WORD_TRANSLATION(error, "error", "Fehler", "error", "Fel", "błąd", "feil", "erreur", "Hata", "errore", "error", "chyba") MAKE_WORD_TRANSLATION(history, "history", "Fehlerspeicher", "geschiedenis", "historik", "historia", "historikk", "historique", "geçmiş", "storico", "história", "historie") MAKE_WORD_TRANSLATION(message, "message", "Meldung", "melding", "meddelande", "komunikat", "melding", "message", "mesajı", "messaggio", "správa", "zpráva") +MAKE_WORD_TRANSLATION(hp_error, "hp error", "WP Fehler", "hp error", "hp Fel", "hp błąd", "hp feil", "hp erreur", "hp Hata", "hp errore", "hp error", "hp chyba") +MAKE_WORD_TRANSLATION(factory, "factory", "werkseinst.", "", "", "", "", "", "", "", "", "") +MAKE_WORD_TRANSLATION(burn_starts, "burner starts", "Brennerstarts", "", "", "", "", "", "", "", "", "") MAKE_WORD_TRANSLATION(na, "n/a", "n/a", "n/a", "n/a", "nd.", "n/a", "n/c", "mevcut değil", "n/a", "n/a", "n/a") MAKE_WORD_TRANSLATION(inverted, "inverted", "invertiert", "omgekeerd", "inverterad", "odwrócony", "invertert", "inversé", "ters", "invertito", "invertovaný", "invertovaný") diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 94cc96969..0f8e60970 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -3005,25 +3005,26 @@ bool Boiler::set_reset(const char * value, const int8_t id) { } if (num == 0) { - return true; // dash - } else if (num == 1) { - // LOG_INFO("Reset boiler maintenance message"); + return true; // dash + } else if (num == 1) { // Reset boiler maintenance message; write_command(0x05, 8, 0xFF, 0x1C); return true; - } else if (num == 2) { - // LOG_INFO("Reset boiler error message"); - write_command(0x05, 0, 0x5A); // error reset + } else if (num == 2) { // Reset boiler error message; + write_command(0x05, 0, 0x5A); return true; - } else if (num == 3) { - // LOG_INFO("Reset boiler history"); - write_command(0x05, 42, 0x01); // clear history + } else if (num == 3) { // Reset boiler history + write_command(0x05, 42, 0x01); return true; } else if (num == 4) { - // LOG_INFO("Reset boiler message"); - write_command(0x05, 8, 0xFF); // same as maintenance + write_command(0x05, 8, 0xFF); // reset messages, same as maintenance reset (1) return true; - } else if (num == 5) { - // LOG_INFO("Factory Reset"); + } else if (num == 5) { // reset Heatpump errors + write_command(0x05, 50, 0xFF); + return true; + } else if (num == 6) { // reset burner starts + write_command(0x05, 2, 165); + return true; + } else if (num == 7) { // factory reset write_command(0x05, 6, 154); return true; } diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 5ac15a43a..4d8361cf0 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.8" +#define EMSESP_APP_VERSION "3.8.2-dev.9" From 4a2d78f8e10688507686fcb474ad499795929d97 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 11 Mar 2026 18:43:25 +0100 Subject: [PATCH 067/162] minflowtemp taken from offset 13 or 8 --- interface/package.json | 26 +- interface/pnpm-lock.yaml | 1087 ++++++++++++++++++++---------------- src/devices/thermostat.cpp | 37 +- src/devices/thermostat.h | 1 + 4 files changed, 650 insertions(+), 501 deletions(-) diff --git a/interface/package.json b/interface/package.json index e497a9859..d6c771f7e 100644 --- a/interface/package.json +++ b/interface/package.json @@ -26,22 +26,22 @@ "@alova/adapter-xhr": "2.3.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@mui/icons-material": "^7.3.8", - "@mui/material": "^7.3.8", - "@preact/compat": "^18.3.1", + "@mui/icons-material": "^7.3.9", + "@mui/material": "^7.3.9", + "@preact/compat": "^18.3.2", "@table-library/react-table-library": "4.1.15", - "alova": "3.5.0", + "alova": "3.5.1", "async-validator": "^4.2.5", "etag": "^1.8.1", "formidable": "^3.5.4", "jwt-decode": "^4.0.0", "magic-string": "^0.30.21", "mime-types": "^3.0.2", - "preact": "^10.28.3", + "preact": "^10.29.0", "react": "^19.2.4", "react-dom": "^19.2.4", - "react-icons": "^5.5.0", - "react-router": "^7.13.0", + "react-icons": "^5.6.0", + "react-router": "^7.13.1", "react-toastify": "^11.0.5", "typesafe-i18n": "^5.27.1", "typescript": "^5.9.3" @@ -49,23 +49,23 @@ "devDependencies": { "@babel/core": "^7.29.0", "@eslint/js": "^10.0.1", - "@preact/compat": "^18.3.1", + "@preact/compat": "^18.3.2", "@preact/preset-vite": "^2.10.3", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.2.3", + "@types/node": "^25.4.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", "concurrently": "^9.2.1", - "eslint": "^10.0.0", + "eslint": "^10.0.3", "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.1", - "rollup-plugin-visualizer": "^6.0.5", + "rollup-plugin-visualizer": "^7.0.1", "terser": "^5.46.0", - "typescript-eslint": "^8.55.0", + "typescript-eslint": "^8.57.0", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, - "packageManager": "pnpm@10.29.3" + "packageManager": "pnpm@10.32.1" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 84c3fb679..e4d0d0a51 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@alova/adapter-xhr': specifier: 2.3.1 - version: 2.3.1(alova@3.5.0) + version: 2.3.1(alova@3.5.1) '@emotion/react': specifier: ^11.14.0 version: 11.14.0(@types/react@19.2.14)(react@19.2.4) @@ -18,20 +18,20 @@ importers: specifier: ^11.14.1 version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@mui/icons-material': - specifier: ^7.3.8 - version: 7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + specifier: ^7.3.9 + version: 7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@mui/material': - specifier: ^7.3.8 - version: 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^7.3.9 + version: 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@preact/compat': - specifier: ^18.3.1 - version: 18.3.1(preact@10.28.3) + specifier: ^18.3.2 + version: 18.3.2(preact@10.29.0) '@table-library/react-table-library': specifier: 4.1.15 version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) alova: - specifier: 3.5.0 - version: 3.5.0 + specifier: 3.5.1 + version: 3.5.1 async-validator: specifier: ^4.2.5 version: 4.2.5 @@ -51,8 +51,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 preact: - specifier: ^10.28.3 - version: 10.28.3 + specifier: ^10.29.0 + version: 10.29.0 react: specifier: ^19.2.4 version: 19.2.4 @@ -60,11 +60,11 @@ importers: specifier: ^19.2.4 version: 19.2.4(react@19.2.4) react-icons: - specifier: ^5.5.0 - version: 5.5.0(react@19.2.4) + specifier: ^5.6.0 + version: 5.6.0(react@19.2.4) react-router: - specifier: ^7.13.0 - version: 7.13.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^7.13.1 + version: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-toastify: specifier: ^11.0.5 version: 11.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -80,16 +80,16 @@ importers: version: 7.29.0 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.0.0) + version: 10.0.1(eslint@10.0.3) '@preact/preset-vite': specifier: ^2.10.3 - version: 2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) + version: 2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) '@types/node': - specifier: ^25.2.3 - version: 25.2.3 + specifier: ^25.4.0 + version: 25.4.0 '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -103,32 +103,32 @@ importers: specifier: ^9.2.1 version: 9.2.1 eslint: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^10.0.3 + version: 10.0.3 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.0.0) + version: 10.1.8(eslint@10.0.3) prettier: specifier: ^3.8.1 version: 3.8.1 rollup-plugin-visualizer: - specifier: ^6.0.5 - version: 6.0.5(rollup@4.57.1) + specifier: ^7.0.1 + version: 7.0.1(rollup@4.59.0) terser: specifier: ^5.46.0 version: 5.46.0 typescript-eslint: - specifier: ^8.55.0 - version: 8.55.0(eslint@10.0.0)(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(eslint@10.0.3)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(terser@5.46.0) + version: 7.3.1(@types/node@25.4.0)(terser@5.46.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) + version: 0.6.1(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) + version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) packages: @@ -463,16 +463,16 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.1': - resolution: {integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==} + '@eslint/config-array@0.23.3': + resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.2': - resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + '@eslint/config-helpers@0.5.3': + resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.0': - resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + '@eslint/core@1.1.1': + resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/js@10.0.1': @@ -484,12 +484,12 @@ packages: eslint: optional: true - '@eslint/object-schema@3.0.1': - resolution: {integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==} + '@eslint/object-schema@3.0.3': + resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.0': - resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + '@eslint/plugin-kit@0.6.1': + resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': @@ -508,10 +508,6 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@isaacs/cliui@9.0.0': - resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} - engines: {node: '>=18'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -531,27 +527,27 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@mui/core-downloads-tracker@7.3.8': - resolution: {integrity: sha512-s9UHZo7QJVly7gNArEZkbbsimHqJZhElgBpXIJdehZ4OWXt+CCr0SBDgUCDJnQrqpd1dWK2dLq5rmO4mCBmI3w==} + '@mui/core-downloads-tracker@7.3.9': + resolution: {integrity: sha512-MOkOCTfbMJwLshlBCKJ59V2F/uaLYfmKnN76kksj6jlGUVdI25A9Hzs08m+zjBRdLv+sK7Rqdsefe8X7h/6PCw==} - '@mui/icons-material@7.3.8': - resolution: {integrity: sha512-88sWg/UJc1X82OMO+ISR4E3P58I3BjFVg0qkmDu7OWlN8VijneZD3ylFA+ImxuPjMHW3SHosfSJYy1fztoz0fw==} + '@mui/icons-material@7.3.9': + resolution: {integrity: sha512-BT+zPJXss8Hg/oEMRmHl17Q97bPACG4ufFSfGEdhiE96jOyR5Dz1ty7ZWt1fVGR0y1p+sSgEwQT/MNZQmoWDCw==} engines: {node: '>=14.0.0'} peerDependencies: - '@mui/material': ^7.3.8 + '@mui/material': ^7.3.9 '@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 - '@mui/material@7.3.8': - resolution: {integrity: sha512-QKd1RhDXE1hf2sQDNayA9ic9jGkEgvZOf0tTkJxlBPG8ns8aS4rS8WwYURw2x5y3739p0HauUXX9WbH7UufFLw==} + '@mui/material@7.3.9': + resolution: {integrity: sha512-I8yO3t4T0y7bvDiR1qhIN6iBWZOTBfVOnmLlM7K6h3dx5YX2a7rnkuXzc2UkZaqhxY9NgTnEbdPlokR1RxCNRQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^7.3.8 + '@mui/material-pigment-css': ^7.3.9 '@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 @@ -565,8 +561,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@7.3.8': - resolution: {integrity: sha512-du5dlPZ9XL3xW2apHoGDXBI+QLtyVJGrXNCfcNYfP/ojkz1RQ0rRV6VG9Rkm1DqEFRG8mjjTL7zmE1Bvn1eR4A==} + '@mui/private-theming@7.3.9': + resolution: {integrity: sha512-ErIyRQvsiQEq7Yvcvfw9UDHngaqjMy9P3JDPnRAaKG5qhpl2C4tX/W1S4zJvpu+feihmZJStjIyvnv6KDbIrlw==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -575,8 +571,8 @@ packages: '@types/react': optional: true - '@mui/styled-engine@7.3.8': - resolution: {integrity: sha512-JHAeXQzS0tJ+Fq3C6J4TVDsW+yKhO4uuxuiLaopNStJeQYBIUCXpKYyUCcgXym4AmhbznQnv9RlHywSH6b0FOg==} + '@mui/styled-engine@7.3.9': + resolution: {integrity: sha512-JqujWt5bX4okjUPGpVof/7pvgClqh7HvIbsIBIOOlCh2u3wG/Bwp4+E1bc1dXSwkrkp9WUAoNdI5HEC+5HKvMw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -588,8 +584,8 @@ packages: '@emotion/styled': optional: true - '@mui/system@7.3.8': - resolution: {integrity: sha512-hoFRj4Zw2Km8DPWZp/nKG+ao5Jw5LSk2m/e4EGc6M3RRwXKEkMSG4TgtfVJg7dS2homRwtdXSMW+iRO0ZJ4+IA==} + '@mui/system@7.3.9': + resolution: {integrity: sha512-aL1q9am8XpRrSabv9qWf5RHhJICJql34wnrc1nz0MuOglPRYF/liN+c8VqZdTvUn9qg+ZjRVbKf4sJVFfIDtmg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -604,16 +600,16 @@ packages: '@types/react': optional: true - '@mui/types@7.4.11': - resolution: {integrity: sha512-fZ2xO9D08IKOxO2oUBi1nnVKH6oJUD+64cnv4YAaFoC0E5+i1+S5AHbNqqvZlYYsbPEQ6qEVwuBqY3jl5W4G+Q==} + '@mui/types@7.4.12': + resolution: {integrity: sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/utils@7.3.8': - resolution: {integrity: sha512-kZRcE2620CBGr+XI8YMmwPj6WIPwSF7uMJjvSfqd8zXVvlz0MCJbzRRUGNf8NgflCLthdji2DdS643TeyJ3+nA==} + '@mui/utils@7.3.9': + resolution: {integrity: sha512-U6SdZaGbfb65fqTsH3V5oJdFj9uYwyLE2WVuNvmbggTSDBb8QHrFsqY8BN3taK9t3yJ8/BPHD/kNvLNyjwM7Yw==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -644,8 +640,8 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@preact/compat@18.3.1': - resolution: {integrity: sha512-Kog4PSRxtT4COtOXjsuQPV1vMXpUzREQfv+6Dmcy9/rMk0HOPK0HTE9fspFjAmY8R80T/T8gtgmZ68u5bOSngw==} + '@preact/compat@18.3.2': + resolution: {integrity: sha512-5vSl55K5yLMvocT7PBKxDOHGgYPjMrKQqqr6roSNjIXcJOtSgDDMjpiCAF3s7klRdmGrN75b/Przmjw8gmlg/w==} peerDependencies: preact: '*' @@ -655,8 +651,8 @@ packages: '@babel/core': 7.x vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x - '@prefresh/babel-plugin@0.5.2': - resolution: {integrity: sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==} + '@prefresh/babel-plugin@0.5.3': + resolution: {integrity: sha512-57LX2SHs4BX2s1IwCjNzTE2OJeEepRCNf1VTEpbNcUyHfMO68eeOWGDIt4ob9aYlW6PEWZ1SuwNikuoIXANDtQ==} '@prefresh/core@1.5.9': resolution: {integrity: sha512-IKBKCPaz34OFVC+adiQ2qaTF5qdztO2/4ZPf4KsRTgjKosWqxVXmEbxCiUydYZRY8GVie+DQlKzQr9gt6HQ+EQ==} @@ -666,8 +662,8 @@ packages: '@prefresh/utils@1.2.1': resolution: {integrity: sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==} - '@prefresh/vite@2.4.11': - resolution: {integrity: sha512-/XjURQqdRiCG3NpMmWqE9kJwrg9IchIOWHzulCfqg2sRe/8oQ1g5De7xrk9lbqPIQLn7ntBkKdqWXIj4E9YXyg==} + '@prefresh/vite@2.4.12': + resolution: {integrity: sha512-FY1fzXpUjiuosznMV0YM7XAOPZjB5FIdWS0W24+XnlxYkt9hNAwwsiKYn+cuTEoMtD/ZVazS5QVssBr9YhpCQA==} peerDependencies: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' @@ -685,141 +681,141 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.57.1': - resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.57.1': - resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.57.1': - resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.57.1': - resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.57.1': - resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.57.1': - resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.57.1': - resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.57.1': - resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.57.1': - resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.57.1': - resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.57.1': - resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.57.1': - resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.57.1': - resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.57.1': - resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.57.1': - resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.57.1': - resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.57.1': - resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.57.1': - resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.57.1': - resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.57.1': - resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.57.1': - resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.57.1': - resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.57.1': - resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.57.1': - resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.57.1': - resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] @@ -853,10 +849,6 @@ packages: svelte: optional: true - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -897,8 +889,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.2.3': - resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} + '@types/node@25.4.0': + resolution: {integrity: sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -925,63 +917,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.55.0': - resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} + '@typescript-eslint/eslint-plugin@8.57.0': + resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.55.0 - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/parser': ^8.57.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.55.0': - resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} + '@typescript-eslint/parser@8.57.0': + resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.55.0': - resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} + '@typescript-eslint/project-service@8.57.0': + resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.55.0': - resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} + '@typescript-eslint/scope-manager@8.57.0': + resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.55.0': - resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} + '@typescript-eslint/tsconfig-utils@8.57.0': + resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.55.0': - resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} + '@typescript-eslint/type-utils@8.57.0': + resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.55.0': - resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} + '@typescript-eslint/types@8.57.0': + resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.55.0': - resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} + '@typescript-eslint/typescript-estree@8.57.0': + resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.55.0': - resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} + '@typescript-eslint/utils@8.57.0': + resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.55.0': - resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} + '@typescript-eslint/visitor-keys@8.57.0': + resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -989,16 +981,16 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - alova@3.5.0: - resolution: {integrity: sha512-G3jdC9AQ6QzHKNO7X/J68kcS8rDtwjhruRb2WcxGOi78k5oU+1aGRIiGroqJbVqHQvh1HWgY6IFzyI6PY9J9Eg==} + alova@3.5.1: + resolution: {integrity: sha512-avrWPyFFWW51YLoy0S3OleNw1BV0GqNI+DSdWHfFbAoKZp80cXCCc7OtjA6OWeyhCOMglUMwo9O8j5huwnzFtQ==} engines: {node: '>= 18.0.0'} ansi-regex@2.1.1: @@ -1009,6 +1001,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} @@ -1017,6 +1013,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} @@ -1058,15 +1058,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.2: - resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} - engines: {node: 20 || >=22} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.19: - resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + baseline-browser-mapping@2.10.0: + resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + engines: {node: '>=6.0.0'} hasBin: true bin-build@3.0.0: @@ -1101,9 +1102,9 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - brace-expansion@5.0.2: - resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} - engines: {node: 20 || >=22} + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1132,6 +1133,10 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + cacheable-request@2.1.4: resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} @@ -1159,8 +1164,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001770: - resolution: {integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==} + caniuse-lite@1.0.30001777: + resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1178,6 +1183,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clone-response@1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} @@ -1323,13 +1332,21 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} @@ -1379,8 +1396,11 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.286: - resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + electron-to-chromium@1.5.307: + resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1558,24 +1578,20 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-scope@9.1.0: - resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@5.0.0: - resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.0: - resolution: {integrity: sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==} + eslint@10.0.3: + resolution: {integrity: sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1584,8 +1600,8 @@ packages: jiti: optional: true - espree@11.1.0: - resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} esquery@1.7.0: @@ -1656,8 +1672,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-xml-parser@4.5.3: - resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} + fast-xml-parser@4.5.4: + resolution: {integrity: sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ==} hasBin: true fastq@1.20.1: @@ -1742,8 +1758,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.1: + resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==} for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} @@ -1782,6 +1798,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1994,9 +2014,9 @@ packages: is-cwebp-readable@3.0.0: resolution: {integrity: sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true is-extglob@2.1.1: @@ -2019,6 +2039,15 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-jpg@2.0.0: resolution: {integrity: sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==} engines: {node: '>=6'} @@ -2064,9 +2093,9 @@ packages: is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -2081,10 +2110,6 @@ packages: resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} engines: {node: '>= 4'} - jackspeak@4.2.3: - resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} - engines: {node: 20 || >=22} - javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} @@ -2255,15 +2280,15 @@ packages: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} - minimatch@10.2.0: - resolution: {integrity: sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==} - engines: {node: 20 || >=22} + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -2291,8 +2316,8 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -2327,9 +2352,9 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -2495,12 +2520,16 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} - preact@10.28.3: - resolution: {integrity: sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==} + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + preact@10.29.0: + resolution: {integrity: sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -2531,8 +2560,8 @@ packages: pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -2553,8 +2582,8 @@ packages: peerDependencies: react: ^19.2.4 - react-icons@5.5.0: - resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==} + react-icons@5.6.0: + resolution: {integrity: sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==} peerDependencies: react: '*' @@ -2564,8 +2593,8 @@ packages: react-is@19.2.4: resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==} - react-router@7.13.0: - resolution: {integrity: sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==} + react-router@7.13.1: + resolution: {integrity: sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -2651,12 +2680,12 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup-plugin-visualizer@6.0.5: - resolution: {integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==} - engines: {node: '>=18'} + rollup-plugin-visualizer@7.0.1: + resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} + engines: {node: '>=22'} hasBin: true peerDependencies: - rolldown: 1.x || ^1.0.0-beta + rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc rollup: 2.x || 3.x || 4.x peerDependenciesMeta: rolldown: @@ -2664,11 +2693,15 @@ packages: rollup: optional: true - rollup@4.57.1: - resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -2681,6 +2714,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + sax@1.5.0: + resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + engines: {node: '>=11.0.0'} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -2786,8 +2823,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.22: - resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} squeak@1.3.0: resolution: {integrity: sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==} @@ -2809,6 +2846,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -2820,6 +2861,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + strip-bom@2.0.0: resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} engines: {node: '>=0.10.0'} @@ -2866,8 +2911,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + svgo@2.8.2: + resolution: {integrity: sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==} engines: {node: '>=10.13.0'} hasBin: true @@ -2959,11 +3004,11 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.55.0: - resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} + typescript-eslint@8.57.0: + resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: @@ -2974,8 +3019,8 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -3089,9 +3134,17 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -3114,10 +3167,18 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} @@ -3127,10 +3188,10 @@ packages: snapshots: - '@alova/adapter-xhr@2.3.1(alova@3.5.0)': + '@alova/adapter-xhr@2.3.1(alova@3.5.1)': dependencies: '@alova/shared': 1.3.2 - alova: 3.5.0 + alova: 3.5.1 '@alova/shared@1.3.2': {} @@ -3429,38 +3490,38 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': dependencies: - eslint: 10.0.0 + eslint: 10.0.3 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.1': + '@eslint/config-array@0.23.3': dependencies: - '@eslint/object-schema': 3.0.1 + '@eslint/object-schema': 3.0.3 debug: 4.4.3 - minimatch: 10.2.0 + minimatch: 10.2.4 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.2': + '@eslint/config-helpers@0.5.3': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 - '@eslint/core@1.1.0': + '@eslint/core@1.1.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.0.0)': + '@eslint/js@10.0.1(eslint@10.0.3)': optionalDependencies: - eslint: 10.0.0 + eslint: 10.0.3 - '@eslint/object-schema@3.0.1': {} + '@eslint/object-schema@3.0.3': {} - '@eslint/plugin-kit@0.6.0': + '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -3474,8 +3535,6 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@isaacs/cliui@9.0.0': {} - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3500,23 +3559,23 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@mui/core-downloads-tracker@7.3.8': {} + '@mui/core-downloads-tracker@7.3.9': {} - '@mui/icons-material@7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': + '@mui/icons-material@7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/core-downloads-tracker': 7.3.8 - '@mui/system': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) - '@mui/types': 7.4.11(@types/react@19.2.14) - '@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4) + '@mui/core-downloads-tracker': 7.3.9 + '@mui/system': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@mui/types': 7.4.12(@types/react@19.2.14) + '@mui/utils': 7.3.9(@types/react@19.2.14)(react@19.2.4) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.12(@types/react@19.2.14) clsx: 2.1.1 @@ -3531,16 +3590,16 @@ snapshots: '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@types/react': 19.2.14 - '@mui/private-theming@7.3.8(@types/react@19.2.14)(react@19.2.4)': + '@mui/private-theming@7.3.9(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4) + '@mui/utils': 7.3.9(@types/react@19.2.14)(react@19.2.4) prop-types: 15.8.1 react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@mui/styled-engine@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': + '@mui/styled-engine@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/cache': 11.14.0 @@ -3553,13 +3612,13 @@ snapshots: '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) - '@mui/system@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': + '@mui/system@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/private-theming': 7.3.8(@types/react@19.2.14)(react@19.2.4) - '@mui/styled-engine': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) - '@mui/types': 7.4.11(@types/react@19.2.14) - '@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4) + '@mui/private-theming': 7.3.9(@types/react@19.2.14)(react@19.2.4) + '@mui/styled-engine': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + '@mui/types': 7.4.12(@types/react@19.2.14) + '@mui/utils': 7.3.9(@types/react@19.2.14)(react@19.2.4) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 @@ -3569,16 +3628,16 @@ snapshots: '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@types/react': 19.2.14 - '@mui/types@7.4.11(@types/react@19.2.14)': + '@mui/types@7.4.12(@types/react@19.2.14)': dependencies: '@babel/runtime': 7.28.6 optionalDependencies: '@types/react': 19.2.14 - '@mui/utils@7.3.8(@types/react@19.2.14)(react@19.2.4)': + '@mui/utils@7.3.9(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@mui/types': 7.4.11(@types/react@19.2.14) + '@mui/types': 7.4.12(@types/react@19.2.14) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 @@ -3607,44 +3666,44 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/compat@18.3.1(preact@10.28.3)': + '@preact/compat@18.3.2(preact@10.29.0)': dependencies: - preact: 10.28.3 + preact: 10.29.0 - '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0))': + '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) - '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)) + vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) transitivePeerDependencies: - preact - rollup - supports-color - '@prefresh/babel-plugin@0.5.2': {} + '@prefresh/babel-plugin@0.5.3': {} - '@prefresh/core@1.5.9(preact@10.28.3)': + '@prefresh/core@1.5.9(preact@10.29.0)': dependencies: - preact: 10.28.3 + preact: 10.29.0 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0))': + '@prefresh/vite@2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 - '@prefresh/babel-plugin': 0.5.2 - '@prefresh/core': 1.5.9(preact@10.28.3) + '@prefresh/babel-plugin': 0.5.3 + '@prefresh/core': 1.5.9(preact@10.29.0) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 10.28.3 - vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) + preact: 10.29.0 + vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) transitivePeerDependencies: - supports-color @@ -3653,87 +3712,87 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.3.0(rollup@4.57.1)': + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.57.1 + rollup: 4.59.0 - '@rollup/rollup-android-arm-eabi@4.57.1': + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true - '@rollup/rollup-android-arm64@4.57.1': + '@rollup/rollup-android-arm64@4.59.0': optional: true - '@rollup/rollup-darwin-arm64@4.57.1': + '@rollup/rollup-darwin-arm64@4.59.0': optional: true - '@rollup/rollup-darwin-x64@4.57.1': + '@rollup/rollup-darwin-x64@4.59.0': optional: true - '@rollup/rollup-freebsd-arm64@4.57.1': + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - '@rollup/rollup-freebsd-x64@4.57.1': + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.57.1': + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.57.1': + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.57.1': + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.57.1': + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.57.1': + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.57.1': + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.57.1': + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.57.1': + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.57.1': + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.57.1': + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.57.1': + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.57.1': + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - '@rollup/rollup-openbsd-x64@4.57.1': + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - '@rollup/rollup-openharmony-arm64@4.57.1': + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.57.1': + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.57.1': + '@rollup/rollup-win32-ia32-msvc@4.59.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.57.1': + '@rollup/rollup-win32-x64-gnu@4.59.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.57.1': + '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true '@sindresorhus/is@0.7.0': {} @@ -3755,14 +3814,12 @@ snapshots: '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 lodash-es: 4.17.23 - minimatch: 9.0.5 + minimatch: 9.0.9 parse-imports-exports: 0.2.4 prettier: 3.8.1 transitivePeerDependencies: - supports-color - '@trysound/sax@0.2.0': {} - '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} @@ -3770,7 +3827,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.2.3 + '@types/node': 25.4.0 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3799,21 +3856,21 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.2.3 + '@types/node': 25.4.0 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.2.3 + '@types/node': 25.4.0 '@types/minimatch@6.0.0': dependencies: - minimatch: 10.2.0 + minimatch: 10.2.4 - '@types/node@25.2.3': + '@types/node@25.4.0': dependencies: - undici-types: 7.16.0 + undici-types: 7.18.2 '@types/parse-json@4.0.2': {} @@ -3833,21 +3890,21 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 25.2.3 + '@types/node': 25.4.0 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.2.3 + '@types/node': 25.4.0 - '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/type-utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 - eslint: 10.0.0 + '@typescript-eslint/parser': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 + eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3855,58 +3912,58 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3 - eslint: 10.0.0 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.55.0': + '@typescript-eslint/scope-manager@8.57.0': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 - '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.0 + eslint: 10.0.3 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.55.0': {} + '@typescript-eslint/types@8.57.0': {} - '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3 - minimatch: 9.0.5 + minimatch: 10.2.4 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3914,36 +3971,36 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - eslint: 10.0.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.55.0': + '@typescript-eslint/visitor-keys@8.57.0': dependencies: - '@typescript-eslint/types': 8.55.0 - eslint-visitor-keys: 4.2.1 + '@typescript-eslint/types': 8.57.0 + eslint-visitor-keys: 5.0.1 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn@8.15.0: {} + acorn@8.16.0: {} - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - alova@3.5.0: + alova@3.5.1: dependencies: '@alova/shared': 1.3.2 rate-limiter-flexible: 5.0.5 @@ -3952,12 +4009,16 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.2.2: {} + ansi-styles@2.2.1: {} ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 + ansi-styles@6.2.3: {} + arch@2.2.0: {} archive-type@4.0.0: @@ -3990,13 +4051,11 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@4.0.2: - dependencies: - jackspeak: 4.2.3 + balanced-match@4.0.4: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.9.19: {} + baseline-browser-mapping@2.10.0: {} bin-build@3.0.0: dependencies: @@ -4047,9 +4106,9 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.2: + brace-expansion@5.0.4: dependencies: - balanced-match: 4.0.2 + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -4057,10 +4116,10 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001770 - electron-to-chromium: 1.5.286 - node-releases: 2.0.27 + baseline-browser-mapping: 2.10.0 + caniuse-lite: 1.0.30001777 + electron-to-chromium: 1.5.307 + node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-alloc-unsafe@1.1.0: {} @@ -4081,6 +4140,10 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + cacheable-request@2.1.4: dependencies: clone-response: 1.0.2 @@ -4117,7 +4180,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001770: {} + caniuse-lite@1.0.30001777: {} caw@2.0.1: dependencies: @@ -4145,6 +4208,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + clone-response@1.0.2: dependencies: mimic-response: 1.0.1 @@ -4311,13 +4380,20 @@ snapshots: deep-is@0.1.4: {} + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} dezalgo@1.0.4: dependencies: @@ -4404,7 +4480,9 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.286: {} + electron-to-chromium@1.5.307: {} + + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -4547,11 +4625,11 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.0.0): + eslint-config-prettier@10.1.8(eslint@10.0.3): dependencies: - eslint: 10.0.0 + eslint: 10.0.3 - eslint-scope@9.1.0: + eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 @@ -4560,29 +4638,27 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} - eslint-visitor-keys@5.0.0: {} - - eslint@10.0.0: + eslint@10.0.3: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.1 - '@eslint/config-helpers': 0.5.2 - '@eslint/core': 1.1.0 - '@eslint/plugin-kit': 0.6.0 + '@eslint/config-array': 0.23.3 + '@eslint/config-helpers': 0.5.3 + '@eslint/core': 1.1.1 + '@eslint/plugin-kit': 0.6.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 6.12.6 + ajv: 6.14.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 9.1.0 - eslint-visitor-keys: 5.0.0 - espree: 11.1.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4593,17 +4669,17 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.0 + minimatch: 10.2.4 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: - supports-color - espree@11.1.0: + espree@11.2.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 5.0.0 + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 esquery@1.7.0: dependencies: @@ -4700,7 +4776,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-xml-parser@4.5.3: + fast-xml-parser@4.5.4: dependencies: strnum: 1.1.2 @@ -4769,10 +4845,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.1 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.4.1: {} for-each@0.3.5: dependencies: @@ -4808,6 +4884,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.5.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -4841,11 +4919,11 @@ snapshots: get-stream@4.1.0: dependencies: - pump: 3.0.3 + pump: 3.0.4 get-stream@5.2.0: dependencies: - pump: 3.0.3 + pump: 3.0.4 get-stream@6.0.1: {} @@ -4869,7 +4947,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -5012,7 +5090,7 @@ snapshots: imagemin-svgo@9.0.0: dependencies: is-svg: 4.4.0 - svgo: 2.8.0 + svgo: 2.8.2 imagemin-webp@6.1.0: dependencies: @@ -5069,7 +5147,7 @@ snapshots: dependencies: file-type: 10.11.0 - is-docker@2.2.1: {} + is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -5085,6 +5163,12 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-jpg@2.0.0: {} is-natural-number@4.0.1: {} @@ -5105,7 +5189,7 @@ snapshots: is-svg@4.4.0: dependencies: - fast-xml-parser: 4.5.3 + fast-xml-parser: 4.5.4 is-typed-array@1.1.15: dependencies: @@ -5113,9 +5197,9 @@ snapshots: is-utf8@0.2.1: {} - is-wsl@2.2.0: + is-wsl@3.1.1: dependencies: - is-docker: 2.2.1 + is-inside-container: 1.0.0 isarray@1.0.0: {} @@ -5128,10 +5212,6 @@ snapshots: has-to-string-tag-x: 1.4.1 is-object: 1.0.2 - jackspeak@4.2.3: - dependencies: - '@isaacs/cliui': 9.0.0 - javascript-natural-sort@0.7.1: {} jpegtran-bin@5.0.2: @@ -5290,15 +5370,15 @@ snapshots: mimic-response@1.0.1: {} - minimatch@10.2.0: + minimatch@10.2.4: dependencies: - brace-expansion: 5.0.2 + brace-expansion: 5.0.4 - minimatch@3.1.2: + minimatch@3.1.5: dependencies: brace-expansion: 1.1.12 - minimatch@9.0.5: + minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 @@ -5322,7 +5402,7 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-releases@2.0.27: {} + node-releases@2.0.36: {} normalize-package-data@2.5.0: dependencies: @@ -5364,11 +5444,14 @@ snapshots: dependencies: mimic-fn: 2.1.0 - open@8.4.2: + open@11.0.0: dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 optionator@0.9.4: dependencies: @@ -5505,13 +5588,15 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.6: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.28.3: {} + powershell-utils@0.1.0: {} + + preact@10.29.0: {} prelude-ls@1.2.1: {} @@ -5533,7 +5618,7 @@ snapshots: pseudomap@1.0.2: {} - pump@3.0.3: + pump@3.0.4: dependencies: end-of-stream: 1.4.5 once: 1.4.0 @@ -5555,7 +5640,7 @@ snapshots: react: 19.2.4 scheduler: 0.27.0 - react-icons@5.5.0(react@19.2.4): + react-icons@5.6.0(react@19.2.4): dependencies: react: 19.2.4 @@ -5563,7 +5648,7 @@ snapshots: react-is@19.2.4: {} - react-router@7.13.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: cookie: 1.1.1 react: 19.2.4 @@ -5652,46 +5737,48 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-visualizer@6.0.5(rollup@4.57.1): + rollup-plugin-visualizer@7.0.1(rollup@4.59.0): dependencies: - open: 8.4.2 + open: 11.0.0 picomatch: 4.0.3 source-map: 0.7.6 - yargs: 17.7.2 + yargs: 18.0.0 optionalDependencies: - rollup: 4.57.1 + rollup: 4.59.0 - rollup@4.57.1: + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.57.1 - '@rollup/rollup-android-arm64': 4.57.1 - '@rollup/rollup-darwin-arm64': 4.57.1 - '@rollup/rollup-darwin-x64': 4.57.1 - '@rollup/rollup-freebsd-arm64': 4.57.1 - '@rollup/rollup-freebsd-x64': 4.57.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 - '@rollup/rollup-linux-arm-musleabihf': 4.57.1 - '@rollup/rollup-linux-arm64-gnu': 4.57.1 - '@rollup/rollup-linux-arm64-musl': 4.57.1 - '@rollup/rollup-linux-loong64-gnu': 4.57.1 - '@rollup/rollup-linux-loong64-musl': 4.57.1 - '@rollup/rollup-linux-ppc64-gnu': 4.57.1 - '@rollup/rollup-linux-ppc64-musl': 4.57.1 - '@rollup/rollup-linux-riscv64-gnu': 4.57.1 - '@rollup/rollup-linux-riscv64-musl': 4.57.1 - '@rollup/rollup-linux-s390x-gnu': 4.57.1 - '@rollup/rollup-linux-x64-gnu': 4.57.1 - '@rollup/rollup-linux-x64-musl': 4.57.1 - '@rollup/rollup-openbsd-x64': 4.57.1 - '@rollup/rollup-openharmony-arm64': 4.57.1 - '@rollup/rollup-win32-arm64-msvc': 4.57.1 - '@rollup/rollup-win32-ia32-msvc': 4.57.1 - '@rollup/rollup-win32-x64-gnu': 4.57.1 - '@rollup/rollup-win32-x64-msvc': 4.57.1 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -5704,6 +5791,8 @@ snapshots: safe-buffer@5.2.1: {} + sax@1.5.0: {} + scheduler@0.27.0: {} seek-bzip@1.0.6: @@ -5783,16 +5872,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.22 + spdx-license-ids: 3.0.23 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.22 + spdx-license-ids: 3.0.23 - spdx-license-ids@3.0.22: {} + spdx-license-ids@3.0.23: {} squeak@1.3.0: dependencies: @@ -5812,6 +5901,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -5824,6 +5919,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + strip-bom@2.0.0: dependencies: is-utf8: 0.2.1 @@ -5860,14 +5959,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svgo@2.8.0: + svgo@2.8.2: dependencies: - '@trysound/sax': 0.2.0 commander: 7.2.0 css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 picocolors: 1.1.1 + sax: 1.5.0 stable: 0.1.8 tar-stream@1.6.2: @@ -5890,7 +5989,7 @@ snapshots: terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -5951,13 +6050,13 @@ snapshots: dependencies: typescript: 5.9.3 - typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.9.3): + typescript-eslint@8.57.0(eslint@10.0.3)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - eslint: 10.0.0 + '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5969,7 +6068,7 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - undici-types@7.16.0: {} + undici-types@7.18.2: {} universalify@2.0.1: {} @@ -6002,7 +6101,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6027,11 +6126,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) + vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6039,28 +6138,28 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) + vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(terser@5.46.0)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.2.3)(terser@5.46.0) + vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.2.3)(terser@5.46.0): + vite@7.3.1(@types/node@25.4.0)(terser@5.46.0): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.57.1 + postcss: 8.5.8 + rollup: 4.59.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.2.3 + '@types/node': 25.4.0 fsevents: 2.3.3 terser: 5.46.0 @@ -6090,8 +6189,19 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrappy@1.0.2: {} + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + xtend@4.0.2: {} y18n@5.0.8: {} @@ -6104,6 +6214,8 @@ snapshots: yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -6114,6 +6226,15 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yauzl@2.10.0: dependencies: buffer-crc32: 0.2.13 diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 011cb8403..f6ec3758f 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1101,6 +1101,8 @@ void Thermostat::process_JunkersWW(std::shared_ptr telegram) { void Thermostat::process_JunkersDisp(std::shared_ptr telegram) { has_enumupdate(telegram, ibaMainDisplay_, 1, 1); has_update(telegram, ibaLanguage_, 3); + has_update(telegram, ibaMinExtTemperature_, 16); + has_update(telegram, ibaBuildingType_, 17); // percent /10 } // type 0x02A5 - data from Worchester CRF200 @@ -1255,10 +1257,10 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { } // minflowtemp could be in 8 or 13, see #2879 and #2969 - // for testing! - uint8_t minflowtemp = 0; - if (telegram->read_value(minflowtemp, 13) && minflowtemp > 0 && model() == EMSdevice::EMS_DEVICE_FLAG_BC400 && hc->heatingtype != 3) { - has_update(hc->minflowtemp, minflowtemp); + // for testing! Check for non-zero value in 13 and 8, only if we have both in telegram + has_update(telegram, hc->minflowtemp2, 13); + if (hc->minflowtemp2 > 0 && hc->minflowtemp2 != EMS_VALUE_UINT8_NOTSET) { + has_update(hc->minflowtemp, hc->minflowtemp2); } else { has_update(telegram, hc->minflowtemp, 8); } @@ -2032,6 +2034,8 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { write_command(0x241, 10, mt, 0x241); } else if (isRC300()) { write_command(0x240, 10, mt, 0x240); + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { + write_command(0x110, 16, mt, 0x110); } else { write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); } @@ -2188,6 +2192,14 @@ bool Thermostat::set_remotehum(const char * value, const int8_t id) { // 0xA5/0xA7 - Set the building settings bool Thermostat::set_building(const char * value, const int8_t id) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { + int i; + if (Helpers::value2number(value, i, 0, 100)) { + write_command(0x110, 17, i / 10, 0x110); + return true; + } + return false; + } uint8_t bd; if (!Helpers::value2enum(value, bd, FL_(enum_ibaBuildingType))) { return false; @@ -2333,6 +2345,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) { // 1-FB10, 2-FB100 if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { if (Helpers::value2enum(value, ctrl, FL_(enum_j_control))) { + hc->control = ctrl; // set in advance, dont wait for verify write_command(set_typeids[hc->hc()], 1, ctrl); return true; } @@ -2381,6 +2394,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) { } } else if (Helpers::value2enum(value, ctrl, FL_(enum_control))) { write_command(set_typeids[hc->hc()], EMS_OFFSET_RC35Set_control, ctrl); + hc->control = ctrl; // set in advance, dont wait for verify return true; } @@ -4084,7 +4098,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co case HeatingCircuit::Mode::MINFLOW: set_typeid = summer_typeids[hc->hc()]; validate_typeid = set_typeid; - offset = hc->heatingtype != 3 && model == EMS_DEVICE_FLAG_BC400 ? 13 : 8; + offset = (hc->minflowtemp2 > 0 && hc->minflowtemp2 != EMS_VALUE_UINT8_NOTSET) ? 13 : 8; factor = 1; break; case HeatingCircuit::Mode::MAXFLOW: @@ -4737,6 +4751,19 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_language)); } + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &ibaBuildingType_, + DeviceValueType::UINT8, + DeviceValueNumOp::DV_NUMOP_MUL10, + FL_(ibaBuildingType), + DeviceValueUOM::PERCENT, + MAKE_CF_CB(set_building)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &ibaMinExtTemperature_, + DeviceValueType::INT8, + FL_(ibaMinExtTemperature), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_minexttemp)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hybridStrategy_, DeviceValueType::ENUM, diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 75ca7c38c..c1c051866 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -65,6 +65,7 @@ class Thermostat : public EMSdevice { int16_t curroominfl; uint8_t flowtempoffset; uint8_t minflowtemp; + uint8_t minflowtemp2 = EMS_VALUE_UINT8_NOTSET; uint8_t maxflowtemp; uint8_t reducemode; uint8_t nofrostmode; From cb96904a5c059d8d6a6dbc0843e9219e39221052 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 13 Mar 2026 10:15:00 +0100 Subject: [PATCH 068/162] fix custom brand use after free of c_str() in json. --- src/core/emsdevice.cpp | 14 +++++++------- src/core/emsdevice.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index 4296e599c..20d338584 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -104,9 +104,9 @@ const char * EMSdevice::uom_to_string(uint8_t uom) { } } -const char * EMSdevice::brand_to_char() { +std::string EMSdevice::brand_to_char() { if (!custom_brand().empty()) { - return custom_brand().c_str(); + return custom_brand(); } switch (brand_) { case EMSdevice::Brand::BOSCH: @@ -331,15 +331,15 @@ uint8_t EMSdevice::decode_brand(uint8_t value) { std::string EMSdevice::to_string() { // for devices that haven't been lookup yet, don't show all details if (product_id_ == 0) { - return std::string(name()) + " (DeviceID:" + Helpers::hextoa(device_id_) + ")"; + return name() + " (DeviceID:" + Helpers::hextoa(device_id_) + ")"; } if (brand_ == Brand::NO_BRAND && custom_brand().empty()) { - return std::string(name()) + " (DeviceID:" + Helpers::hextoa(device_id_) + ", ProductID:" + Helpers::itoa(product_id_) + ", Version:" + version_ + ")"; + return name() + " (DeviceID:" + Helpers::hextoa(device_id_) + ", ProductID:" + Helpers::itoa(product_id_) + ", Version:" + version_ + ")"; } - return std::string(brand_to_char()) + " " + name() + " (DeviceID:" + Helpers::hextoa(device_id_) + ", ProductID:" + Helpers::itoa(product_id_) - + ", Version:" + version_ + ")"; + return brand_to_char() + " " + name() + " (DeviceID:" + Helpers::hextoa(device_id_) + ", ProductID:" + Helpers::itoa(product_id_) + ", Version:" + version_ + + ")"; } // returns string of EMS device version and productID @@ -2160,7 +2160,7 @@ void EMSdevice::mqtt_ha_entity_config_create() { if (!dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED) && dv.has_state(DeviceValueState::DV_ACTIVE) && !dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE)) { // create_device_config is only done once for the EMS device. It can added to any entity, so we take the first - if (Mqtt::publish_ha_sensor_config_dv(dv, name().c_str(), std::string(brand_to_char()).c_str(), to_string_version().c_str(), false, create_device_config)) { + if (Mqtt::publish_ha_sensor_config_dv(dv, name().c_str(), brand_to_char().c_str(), to_string_version().c_str(), false, create_device_config)) { dv.add_state(DeviceValueState::DV_HA_CONFIG_CREATED); create_device_config = false; // only create the main config once count++; diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index 555f9d738..eb7e9c2a9 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -63,7 +63,7 @@ class EMSdevice { const char * device_type_2_device_name_translated(); // returns translated device type name bool has_tags(const int8_t tag) const; bool has_cmd(const char * cmd, const int8_t id) const; - const char * brand_to_char(); + std::string brand_to_char(); std::string to_string(); std::string to_string_short(); std::string to_string_version(); From a261ca23af2accc8226647f09754ae14075d9c6c Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 13 Mar 2026 10:15:51 +0100 Subject: [PATCH 069/162] add baseflowtemp #2969 --- CHANGELOG_LATEST.md | 1 + interface/package.json | 2 +- interface/pnpm-lock.yaml | 657 +++++++++++++++++++++++++-------- src/core/locale_translations.h | 1 + src/devices/thermostat.cpp | 22 +- src/devices/thermostat.h | 6 +- 6 files changed, 526 insertions(+), 163 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index e091e1ece..68de6dafb 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -24,3 +24,4 @@ For more details go to [emsesp.org](https://emsesp.org/). - remove wrong burnMinPower [#2918](https://github.com/emsesp/EMS-ESP32/issues/2918) - store scheduler active state to nvs [#2946](https://github.com/emsesp/EMS-ESP32/discussions/2946) - translated modes `heat` and `eco` for HA-climate mode-str-tpl +- support `minflowtemp` and `baseflowtemp` [#2969](https://github.com/emsesp/EMS-ESP32/discussions/2969) diff --git a/interface/package.json b/interface/package.json index d6c771f7e..ee861695f 100644 --- a/interface/package.json +++ b/interface/package.json @@ -52,7 +52,7 @@ "@preact/compat": "^18.3.2", "@preact/preset-vite": "^2.10.3", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.4.0", + "@types/node": "^25.5.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index e4d0d0a51..274898da3 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -83,13 +83,13 @@ importers: version: 10.0.1(eslint@10.0.3) '@preact/preset-vite': specifier: ^2.10.3 - version: 2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) + version: 2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) '@types/node': - specifier: ^25.4.0 - version: 25.4.0 + specifier: ^25.5.0 + version: 25.5.0 '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -113,7 +113,7 @@ importers: version: 3.8.1 rollup-plugin-visualizer: specifier: ^7.0.1 - version: 7.0.1(rollup@4.59.0) + version: 7.0.1(rolldown@1.0.0-rc.9)(rollup@4.59.0) terser: specifier: ^5.46.0 version: 5.46.0 @@ -122,13 +122,13 @@ importers: version: 8.57.0(eslint@10.0.3)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.4.0)(terser@5.46.0) + version: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) + version: 0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) + version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) packages: @@ -237,6 +237,15 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@emnapi/core@1.9.0': + resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} + + '@emnapi/runtime@1.9.0': + resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -291,68 +300,68 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -363,92 +372,92 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -618,6 +627,9 @@ packages: '@types/react': optional: true + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} @@ -634,6 +646,9 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/types@0.115.0': + resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} @@ -668,6 +683,104 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' + '@rolldown/binding-android-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.9': + resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} + '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -849,6 +962,9 @@ packages: svelte: optional: true + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -889,8 +1005,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.4.0': - resolution: {integrity: sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw==} + '@types/node@25.5.0': + resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1065,8 +1181,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.0: - resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + baseline-browser-mapping@2.10.7: + resolution: {integrity: sha512-1ghYO3HnxGec0TCGBXiDLVns4eCSx4zJpxnHrlqFQajmhfKMQBzUGDdkMK7fUW7PTHTeLf+j87aTuKuuwWzMGw==} engines: {node: '>=6.0.0'} hasBin: true @@ -1164,8 +1280,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001777: - resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==} + caniuse-lite@1.0.30001778: + resolution: {integrity: sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1348,6 +1464,10 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} @@ -1396,8 +1516,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.307: - resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} + electron-to-chromium@1.5.313: + resolution: {integrity: sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1555,8 +1675,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} hasBin: true @@ -2175,6 +2295,80 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -2680,6 +2874,11 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rolldown@1.0.0-rc.9: + resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-visualizer@7.0.1: resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} engines: {node: '>=22'} @@ -3326,6 +3525,22 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@emnapi/core@1.9.0': + dependencies: + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.28.6 @@ -3409,85 +3624,85 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.27.3': + '@esbuild/aix-ppc64@0.27.4': optional: true - '@esbuild/android-arm64@0.27.3': + '@esbuild/android-arm64@0.27.4': optional: true - '@esbuild/android-arm@0.27.3': + '@esbuild/android-arm@0.27.4': optional: true - '@esbuild/android-x64@0.27.3': + '@esbuild/android-x64@0.27.4': optional: true - '@esbuild/darwin-arm64@0.27.3': + '@esbuild/darwin-arm64@0.27.4': optional: true - '@esbuild/darwin-x64@0.27.3': + '@esbuild/darwin-x64@0.27.4': optional: true - '@esbuild/freebsd-arm64@0.27.3': + '@esbuild/freebsd-arm64@0.27.4': optional: true - '@esbuild/freebsd-x64@0.27.3': + '@esbuild/freebsd-x64@0.27.4': optional: true - '@esbuild/linux-arm64@0.27.3': + '@esbuild/linux-arm64@0.27.4': optional: true - '@esbuild/linux-arm@0.27.3': + '@esbuild/linux-arm@0.27.4': optional: true - '@esbuild/linux-ia32@0.27.3': + '@esbuild/linux-ia32@0.27.4': optional: true '@esbuild/linux-loong64@0.14.54': optional: true - '@esbuild/linux-loong64@0.27.3': + '@esbuild/linux-loong64@0.27.4': optional: true - '@esbuild/linux-mips64el@0.27.3': + '@esbuild/linux-mips64el@0.27.4': optional: true - '@esbuild/linux-ppc64@0.27.3': + '@esbuild/linux-ppc64@0.27.4': optional: true - '@esbuild/linux-riscv64@0.27.3': + '@esbuild/linux-riscv64@0.27.4': optional: true - '@esbuild/linux-s390x@0.27.3': + '@esbuild/linux-s390x@0.27.4': optional: true - '@esbuild/linux-x64@0.27.3': + '@esbuild/linux-x64@0.27.4': optional: true - '@esbuild/netbsd-arm64@0.27.3': + '@esbuild/netbsd-arm64@0.27.4': optional: true - '@esbuild/netbsd-x64@0.27.3': + '@esbuild/netbsd-x64@0.27.4': optional: true - '@esbuild/openbsd-arm64@0.27.3': + '@esbuild/openbsd-arm64@0.27.4': optional: true - '@esbuild/openbsd-x64@0.27.3': + '@esbuild/openbsd-x64@0.27.4': optional: true - '@esbuild/openharmony-arm64@0.27.3': + '@esbuild/openharmony-arm64@0.27.4': optional: true - '@esbuild/sunos-x64@0.27.3': + '@esbuild/sunos-x64@0.27.4': optional: true - '@esbuild/win32-arm64@0.27.3': + '@esbuild/win32-arm64@0.27.4': optional: true - '@esbuild/win32-ia32@0.27.3': + '@esbuild/win32-ia32@0.27.4': optional: true - '@esbuild/win32-x64@0.27.3': + '@esbuild/win32-x64@0.27.4': optional: true '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': @@ -3646,6 +3861,13 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.9.0 + '@emnapi/runtime': 1.9.0 + '@tybys/wasm-util': 0.10.1 + optional: true + '@noble/hashes@1.8.0': {} '@nodelib/fs.scandir@2.1.5': @@ -3660,6 +3882,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 + '@oxc-project/types@0.115.0': + optional: true + '@paralleldrive/cuid2@2.3.1': dependencies: '@noble/hashes': 1.8.0 @@ -3670,18 +3895,18 @@ snapshots: dependencies: preact: 10.29.0 - '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0))': + '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) + '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) transitivePeerDependencies: - preact - rollup @@ -3695,7 +3920,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0))': + '@prefresh/vite@2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3703,10 +3928,60 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.0 - vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) transitivePeerDependencies: - supports-color + '@rolldown/binding-android-arm64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.9': + optional: true + '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 @@ -3820,6 +4095,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} @@ -3827,7 +4107,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.4.0 + '@types/node': 25.5.0 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3856,19 +4136,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.4.0 + '@types/node': 25.5.0 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.4.0 + '@types/node': 25.5.0 '@types/minimatch@6.0.0': dependencies: minimatch: 10.2.4 - '@types/node@25.4.0': + '@types/node@25.5.0': dependencies: undici-types: 7.18.2 @@ -3890,11 +4170,11 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 25.4.0 + '@types/node': 25.5.0 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.4.0 + '@types/node': 25.5.0 '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': dependencies: @@ -4055,7 +4335,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.0: {} + baseline-browser-mapping@2.10.7: {} bin-build@3.0.0: dependencies: @@ -4116,9 +4396,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001777 - electron-to-chromium: 1.5.307 + baseline-browser-mapping: 2.10.7 + caniuse-lite: 1.0.30001778 + electron-to-chromium: 1.5.313 node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4180,7 +4460,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001777: {} + caniuse-lite@1.0.30001778: {} caw@2.0.1: dependencies: @@ -4395,6 +4675,9 @@ snapshots: define-lazy-prop@3.0.0: {} + detect-libc@2.1.2: + optional: true + dezalgo@1.0.4: dependencies: asap: 2.0.6 @@ -4480,7 +4763,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.307: {} + electron-to-chromium@1.5.313: {} emoji-regex@10.6.0: {} @@ -4590,34 +4873,34 @@ snapshots: esbuild-windows-64: 0.14.54 esbuild-windows-arm64: 0.14.54 - esbuild@0.27.3: + esbuild@0.27.4: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 escalade@3.2.0: {} @@ -5266,6 +5549,56 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + optional: true + lines-and-columns@1.2.4: {} load-json-file@1.1.0: @@ -5737,13 +6070,36 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-visualizer@7.0.1(rollup@4.59.0): + rolldown@1.0.0-rc.9: + dependencies: + '@oxc-project/types': 0.115.0 + '@rolldown/pluginutils': 1.0.0-rc.9 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-x64': 1.0.0-rc.9 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 + optional: true + + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.9)(rollup@4.59.0): dependencies: open: 11.0.0 picomatch: 4.0.3 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: + rolldown: 1.0.0-rc.9 rollup: 4.59.0 rollup@4.59.0: @@ -6101,7 +6457,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6126,11 +6482,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6138,29 +6494,30 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(terser@5.46.0)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.4.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.4.0)(terser@5.46.0): + vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0): dependencies: - esbuild: 0.27.3 + esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.8 rollup: 4.59.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.4.0 + '@types/node': 25.5.0 fsevents: 2.3.3 + lightningcss: 1.32.0 terser: 5.46.0 which-typed-array@1.1.20: diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index 4911aceb4..839522067 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -780,6 +780,7 @@ MAKE_TRANSLATION(comforttemp, "comforttemp", "comfort temperature", "Komforttemp MAKE_TRANSLATION(summertemp, "summertemp", "summer temperature", "Sommertemperatur", "Zomertemperatuur", "Sommartemperatur", "temperatura przełączania lato/zima", "Sommertemperatur", "température été", "yaz sıcaklığı", "temperatura estiva", "letná teplota", "letní teplota") MAKE_TRANSLATION(designtemp, "designtemp", "design temperature", "Auslegungstemperatur", "Ontwerptemperatuur", "Design-temperatur", "temperatura projektowa", "designtemperatur", "température conception", "özel sıcaklık", "temperatura predefinita", "návrhová teplota", "dimenzovaná teplota") MAKE_TRANSLATION(offsettemp, "offsettemp", "offset temperature", "Temperaturanhebung", "Temperatuur offset", "Temperaturkorrigering", "korekta temperatury", "temperaturkorrigering", "température offset", "artış sıcaklığı", "aumento della temperatura", "offsetová teplota", "offset teploty") +MAKE_TRANSLATION(baseflowtemp, "baseflowtemp", "base flow temperature", "Basis Vorlauftemperatur") // ToDo translate MAKE_TRANSLATION(minflowtemp, "minflowtemp", "min flow temperature", "min. Vorlauftemperatur", "Minimale aanvoertemperatuur", "Min. Flödestemperatur", "minimalna temperatura zasilania", "min. turtemperatur", "température min. flux", "minimun akış sıcaklığı", "temperatura minima di mandata", "min. výstupná teplota", "vytápění minimální teplota") MAKE_TRANSLATION(maxflowtemp, "maxflowtemp", "max flow temperature", "max. Vorlauftemperatur", "Maximale aanvoertemperatuur", "Max. Flödestemperatur", "maksymalna temperatura zasilania", "maks turtemperatur", "température max flux", "maksimum akış sıcaklığı", "temperatura massima di mandata", "maximálna teplota prívodu", "vytápění maximální teplota") MAKE_TRANSLATION(roominfluence, "roominfluence", "room influence", "Raumeinfluss", "Ruimteinvloed", "Rumspåverkan", "wpływ pomieszczenia", "rominnflytelse", "influence pièce", "oda etkisi", "influenza della camera", "vplyv miestnosti", "vliv prostoru") diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index f6ec3758f..889276ad7 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1255,16 +1255,9 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { } else { has_update(telegram, hc->designtemp, 5); } - - // minflowtemp could be in 8 or 13, see #2879 and #2969 - // for testing! Check for non-zero value in 13 and 8, only if we have both in telegram - has_update(telegram, hc->minflowtemp2, 13); - if (hc->minflowtemp2 > 0 && hc->minflowtemp2 != EMS_VALUE_UINT8_NOTSET) { - has_update(hc->minflowtemp, hc->minflowtemp2); - } else { - has_update(telegram, hc->minflowtemp, 8); - } - + // minflowtemp could be in 8 or 13 #2969 + has_update(telegram, hc->minflowtemp, 13); + has_update(telegram, hc->baseflowtemp, 8); has_update(telegram, hc->fastHeatup, 10); has_update(telegram, hc->comfortPointOffset, 11); has_update(telegram, hc->comfortPointTemp, 12); @@ -4095,10 +4088,16 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co } factor = 1; break; + case HeatingCircuit::Mode::BASEFLOW: + set_typeid = summer_typeids[hc->hc()]; + validate_typeid = set_typeid; + offset = 8; + factor = 1; + break; case HeatingCircuit::Mode::MINFLOW: set_typeid = summer_typeids[hc->hc()]; validate_typeid = set_typeid; - offset = (hc->minflowtemp2 > 0 && hc->minflowtemp2 != EMS_VALUE_UINT8_NOTSET) ? 13 : 8; + offset = 13; factor = 1; break; case HeatingCircuit::Mode::MAXFLOW: @@ -4914,6 +4913,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummertemp, DeviceValueType::UINT8, FL_(summertemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_summertemp), 10, 30); register_device_value(tag, &hc->designtemp, DeviceValueType::UINT8, FL_(designtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_designtemp)); register_device_value(tag, &hc->offsettemp, DeviceValueType::INT8, FL_(offsettemp), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_offsettemp)); + register_device_value(tag, &hc->baseflowtemp, DeviceValueType::UINT8, FL_(baseflowtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_baseflowtemp)); register_device_value(tag, &hc->minflowtemp, DeviceValueType::UINT8, FL_(minflowtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_minflowtemp)); register_device_value(tag, &hc->maxflowtemp, DeviceValueType::UINT8, FL_(maxflowtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_maxflowtemp)); register_device_value(tag, &hc->roominfluence, DeviceValueType::UINT8, FL_(roominfluence), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_roominfluence)); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index c1c051866..4c33b78b9 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -65,7 +65,7 @@ class Thermostat : public EMSdevice { int16_t curroominfl; uint8_t flowtempoffset; uint8_t minflowtemp; - uint8_t minflowtemp2 = EMS_VALUE_UINT8_NOTSET; + uint8_t baseflowtemp; uint8_t maxflowtemp; uint8_t reducemode; uint8_t nofrostmode; @@ -170,6 +170,7 @@ class Thermostat : public EMSdevice { DAYMID, COOLTEMP, COOLSTART, + BASEFLOW, UNKNOWN }; @@ -584,6 +585,9 @@ class Thermostat : public EMSdevice { inline bool set_minflowtemp(const char * value, const int8_t id) { return set_temperature_value(value, id, HeatingCircuit::Mode::MINFLOW); } + inline bool set_baseflowtemp(const char * value, const int8_t id) { + return set_temperature_value(value, id, HeatingCircuit::Mode::BASEFLOW); + } inline bool set_roominfluence(const char * value, const int8_t id) { return set_temperature_value(value, id, HeatingCircuit::Mode::ROOMINFLUENCE, true); } From b04355e3e18cd541ee0a8284f00963c7614d9640 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 13 Mar 2026 10:32:33 +0100 Subject: [PATCH 070/162] update asyncwebserver --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index c0319c603..a9655bb2d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -106,7 +106,7 @@ board_build.filesystem = littlefs lib_deps = bblanchon/ArduinoJson @ 7.4.2 ESP32Async/AsyncTCP @ 3.4.10 - ESP32Async/ESPAsyncWebServer @ 3.10.0 + ESP32Async/ESPAsyncWebServer @ 3.10.1 https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 From f1fc8d9aae49e8c9a98e4469e187947702d8d76f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 13 Mar 2026 16:30:53 +0100 Subject: [PATCH 071/162] update testdata --- test/test_api/test_api.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test_api/test_api.h b/test/test_api/test_api.h index aa52e79be..1773ef272 100644 --- a/test/test_api/test_api.h +++ b/test/test_api/test_api.h @@ -31,7 +31,8 @@ void test_2() { "off\",\"heatingtemp\":\"heating temperature\",\"maintenance\":\"maintenance scheduled\",\"maintenancedate\":\"next maintenance " "date\",\"maintenancetime\":\"time to next maintenance\",\"nofrostmode\":\"nofrost mode\",\"nofrosttemp\":\"nofrost " "temperature\",\"nompower\":\"nominal Power\",\"nrgheat\":\"energy heating\",\"pumpcharacter\":\"boiler pump characteristic\",\"pumpdelay\":\"pump " - "delay\",\"pumpmode\":\"boiler pump mode\",\"pumpmodmax\":\"boiler pump max power\",\"pumpmodmin\":\"boiler pump min power\",\"pumpontemp\":\"pump " + "delay\",\"pumpkickday\":\"pump kick day\",\"pumpkickdelay\":\"pump kick delay\",\"pumpkickhour\":\"pump kick hour\",\"pumpmode\":\"boiler pump " + "mode\",\"pumpmodmax\":\"boiler pump max power\",\"pumpmodmin\":\"boiler pump min power\",\"pumpontemp\":\"pump " "logic temperature\",\"reset\":\"reset\",\"selburnpow\":\"burner selected max power\",\"selflowtemp\":\"selected flow " "temperature\",\"summertemp\":\"summer temperature\"}]"; TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/commands")); From b1e974a82c328c9896d4a920e12ca9afae13fd69 Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Fri, 13 Mar 2026 19:09:14 +0000 Subject: [PATCH 072/162] chore: update generated files for v3.8.2-dev.9 --- docs/Modbus-Entity-Registers.md | 3615 +++++++++++++------------ docs/dump_entities.csv | 3588 ++++++++++++------------ docs/dump_telegrams.csv | 11 +- src/core/modbus_entity_parameters.hpp | 442 +-- 4 files changed, 3995 insertions(+), 3661 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index b755e3930..e9fefdfb6 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -66,143 +66,148 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 84 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 87 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 | -| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 | -| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 90 | 2 | 1/100 | +| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 92 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 94 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 96 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 98 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/100 | +| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 102 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 | -| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 | -| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 | -| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 | -| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 | +| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 104 | 2 | 1/60 | +| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 106 | 2 | 1/60 | +| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 108 | 2 | 1/60 | +| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 110 | 2 | 1/60 | | dhw.uptimecomp | operating time compressor | time | minutes | false | DHW | 4 | 2 | 1/60 | -| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 | -| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 111 | 2 | 1 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 113 | 2 | 1 | -| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 | +| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 112 | 2 | 1/60 | +| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 114 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 116 | 2 | 1 | +| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 118 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 | -| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 | -| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 119 | 2 | 1 | -| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 121 | 2 | 1 | -| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 | +| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 120 | 2 | 1 | +| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 122 | 2 | 1 | +| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 124 | 2 | 1 | +| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 126 | 2 | 1 | | dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 | -| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 | -| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 | -| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 | -| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 | +| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 128 | 2 | 1 | +| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 130 | 2 | 1 | +| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 132 | 2 | 1 | +| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 134 | 2 | 1 | | dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 | kWh | false | DHW | 10 | 2 | 1 | -| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 | -| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 135 | 2 | 1 | -| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 137 | 2 | 1 | +| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 136 | 2 | 1 | +| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 138 | 2 | 1 | +| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 140 | 2 | 1 | | dhw.nrgsupp | total energy warm supplied | uint24 | kWh | false | DHW | 12 | 2 | 1 | -| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 | -| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 141 | 2 | 1 | -| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 143 | 1 | 1/10 | +| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 142 | 2 | 1 | +| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 144 | 2 | 1 | +| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 146 | 1 | 1/10 | uint8 -| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 144 | 1 | 1 | +| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 147 | 1 | 1 | uint8 -| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 | +| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 148 | 1 | 1/10 | uint8 -| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 146 | 1 | 10 | +| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 149 | 1 | 10 | uint8 -| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 147 | 1 | 50 | -| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 | -| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 149 | 1 | 1 | -| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 150 | 1 | 1 | -| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 | -| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 152 | 1 | 1 | -| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 | -| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 | -| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | -| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | -| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 157 | 1 | 1/10 | -| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 158 | 1 | 1/10 | -| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 159 | 1 | 1/10 | -| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 | -| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | -| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | -| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | -| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | -| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | -| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | -| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | -| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | -| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | -| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | -| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | -| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 150 | 1 | 50 | +| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 151 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 152 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | uint8 -| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 | -| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 175 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 176 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 184 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 185 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 193 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 194 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 202 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 203 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 211 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 212 | 1 | 1 | +| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 176 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 177 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 178 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 179 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 187 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 188 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 196 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 197 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 205 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 206 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 214 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 215 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 213 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 216 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 217 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 218 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 216 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 217 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 218 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 219 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 220 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 221 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 219 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 222 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 223 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 221 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 224 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 226 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 227 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 225 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 228 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 229 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 230 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 228 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 231 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 232 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 230 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 231 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 233 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 234 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 235 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 233 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 236 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 238 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 243 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 244 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 241 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 244 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 246 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 247 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 245 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 246 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 247 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 248 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 248 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 249 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 250 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 251 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 249 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 252 | 1 | 1 | | dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 | uint8 | dhw.altopprioheat | prioritise heating during dhw | uint8 (>=20<=120) | minutes | true | DHW | 16 | 1 | 1 | @@ -298,37 +303,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -367,11 +372,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -425,10 +435,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -451,37 +461,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -520,11 +530,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -578,10 +593,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -604,37 +619,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -673,11 +688,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -731,10 +751,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -757,37 +777,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -826,11 +846,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -884,10 +909,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -910,37 +935,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -979,11 +1004,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1037,10 +1067,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -1063,37 +1093,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1132,11 +1162,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1190,10 +1225,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -1216,37 +1251,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1285,11 +1320,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1343,10 +1383,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -1369,37 +1409,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1438,11 +1478,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1496,10 +1541,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -1522,37 +1567,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1591,11 +1636,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1649,10 +1699,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -1675,37 +1725,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1744,11 +1794,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1802,10 +1857,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -1828,37 +1883,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -1897,11 +1952,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -1955,10 +2015,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -1981,37 +2041,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2050,11 +2110,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2108,10 +2173,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -2134,37 +2199,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2203,11 +2268,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2261,10 +2331,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -2287,37 +2357,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2356,11 +2426,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2414,10 +2489,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -2440,37 +2515,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2509,11 +2584,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2567,10 +2647,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -2593,37 +2673,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2662,11 +2742,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2720,10 +2805,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -2746,37 +2831,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2815,11 +2900,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -2873,10 +2963,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -2899,37 +2989,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -2968,11 +3058,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3026,10 +3121,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -3052,37 +3147,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3121,11 +3216,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3179,10 +3279,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -3205,37 +3305,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3274,11 +3374,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -3332,10 +3437,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -3396,143 +3501,148 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 84 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 87 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 | -| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 | -| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 90 | 2 | 1/100 | +| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 92 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 94 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 96 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 98 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/100 | +| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 102 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 | -| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 | -| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 | -| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 | -| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 | +| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 104 | 2 | 1/60 | +| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 106 | 2 | 1/60 | +| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 108 | 2 | 1/60 | +| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 110 | 2 | 1/60 | | dhw.uptimecomp | operating time compressor | time | minutes | false | DHW | 4 | 2 | 1/60 | -| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 | -| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 111 | 2 | 1 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 113 | 2 | 1 | -| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 | +| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 112 | 2 | 1/60 | +| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 114 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 116 | 2 | 1 | +| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 118 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 | -| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 | -| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 119 | 2 | 1 | -| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 121 | 2 | 1 | -| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 | +| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 120 | 2 | 1 | +| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 122 | 2 | 1 | +| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 124 | 2 | 1 | +| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 126 | 2 | 1 | | dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 | -| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 | -| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 | -| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 | -| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 | +| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 128 | 2 | 1 | +| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 130 | 2 | 1 | +| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 132 | 2 | 1 | +| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 134 | 2 | 1 | | dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 | kWh | false | DHW | 10 | 2 | 1 | -| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 | -| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 135 | 2 | 1 | -| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 137 | 2 | 1 | +| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 136 | 2 | 1 | +| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 138 | 2 | 1 | +| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 140 | 2 | 1 | | dhw.nrgsupp | total energy warm supplied | uint24 | kWh | false | DHW | 12 | 2 | 1 | -| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 | -| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 141 | 2 | 1 | -| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 143 | 1 | 1/10 | +| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 142 | 2 | 1 | +| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 144 | 2 | 1 | +| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 146 | 1 | 1/10 | uint8 -| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 144 | 1 | 1 | +| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 147 | 1 | 1 | uint8 -| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 | +| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 148 | 1 | 1/10 | uint8 -| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 146 | 1 | 10 | +| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 149 | 1 | 10 | uint8 -| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 147 | 1 | 50 | -| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 | -| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 149 | 1 | 1 | -| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 150 | 1 | 1 | -| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 | -| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 152 | 1 | 1 | -| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 | -| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 | -| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | -| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | -| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 157 | 1 | 1/10 | -| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 158 | 1 | 1/10 | -| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 159 | 1 | 1/10 | -| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 | -| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | -| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | -| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | -| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | -| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | -| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | -| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | -| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | -| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | -| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | -| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | -| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 150 | 1 | 50 | +| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 151 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 152 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | uint8 -| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 | -| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 175 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 176 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 184 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 185 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 193 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 194 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 202 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 203 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 211 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 212 | 1 | 1 | +| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 176 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 177 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 178 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 179 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 187 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 188 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 196 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 197 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 205 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 206 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 214 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 215 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 213 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 216 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 217 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 218 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 216 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 217 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 218 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 219 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 220 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 221 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 219 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 222 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 223 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 221 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 224 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 226 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 227 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 225 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 228 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 229 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 230 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 228 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 231 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 232 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 230 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 231 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 233 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 234 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 235 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 233 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 236 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 238 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 243 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 244 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 241 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 244 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 246 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 247 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 245 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 246 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 247 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 248 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 248 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 249 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 250 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 251 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 249 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 252 | 1 | 1 | | dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 | uint8 | dhw.altopprioheat | prioritise heating during dhw | uint8 (>=20<=120) | minutes | true | DHW | 16 | 1 | 1 | @@ -3666,143 +3776,148 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 84 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 87 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 | -| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 | -| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 90 | 2 | 1/100 | +| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 92 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 94 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 96 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 98 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/100 | +| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 102 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 | -| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 | -| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 | -| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 | -| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 | +| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 104 | 2 | 1/60 | +| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 106 | 2 | 1/60 | +| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 108 | 2 | 1/60 | +| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 110 | 2 | 1/60 | | dhw.uptimecomp | operating time compressor | time | minutes | false | DHW | 4 | 2 | 1/60 | -| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 | -| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 111 | 2 | 1 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 113 | 2 | 1 | -| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 | +| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 112 | 2 | 1/60 | +| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 114 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 116 | 2 | 1 | +| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 118 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 | -| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 | -| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 119 | 2 | 1 | -| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 121 | 2 | 1 | -| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 | +| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 120 | 2 | 1 | +| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 122 | 2 | 1 | +| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 124 | 2 | 1 | +| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 126 | 2 | 1 | | dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 | -| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 | -| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 | -| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 | -| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 | +| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 128 | 2 | 1 | +| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 130 | 2 | 1 | +| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 132 | 2 | 1 | +| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 134 | 2 | 1 | | dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 | kWh | false | DHW | 10 | 2 | 1 | -| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 | -| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 135 | 2 | 1 | -| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 137 | 2 | 1 | +| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 136 | 2 | 1 | +| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 138 | 2 | 1 | +| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 140 | 2 | 1 | | dhw.nrgsupp | total energy warm supplied | uint24 | kWh | false | DHW | 12 | 2 | 1 | -| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 | -| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 141 | 2 | 1 | -| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 143 | 1 | 1/10 | +| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 142 | 2 | 1 | +| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 144 | 2 | 1 | +| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 146 | 1 | 1/10 | uint8 -| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 144 | 1 | 1 | +| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 147 | 1 | 1 | uint8 -| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 | +| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 148 | 1 | 1/10 | uint8 -| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 146 | 1 | 10 | +| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 149 | 1 | 10 | uint8 -| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 147 | 1 | 50 | -| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 | -| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 149 | 1 | 1 | -| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 150 | 1 | 1 | -| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 | -| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 152 | 1 | 1 | -| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 | -| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 | -| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | -| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | -| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 157 | 1 | 1/10 | -| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 158 | 1 | 1/10 | -| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 159 | 1 | 1/10 | -| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 | -| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | -| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | -| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | -| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | -| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | -| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | -| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | -| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | -| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | -| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | -| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | -| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 150 | 1 | 50 | +| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 151 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 152 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | uint8 -| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 | -| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 174 | 1 | 1 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 175 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 176 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 184 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 185 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 193 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 194 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 202 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 203 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 211 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 212 | 1 | 1 | +| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 176 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 177 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 178 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 179 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 187 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 188 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 196 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 197 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 205 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 206 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 214 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 215 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 213 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 214 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 215 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 216 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 217 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 218 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 216 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 217 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 218 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 219 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 220 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 221 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 219 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 222 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 223 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 221 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 224 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 226 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 227 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 225 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 228 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 229 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 230 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 228 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 231 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 232 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 230 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 231 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 233 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 234 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 235 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 233 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 234 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 235 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 236 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 236 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 237 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 238 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 243 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 244 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 241 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 244 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 246 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 247 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 245 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 246 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 247 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 248 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 248 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 249 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 250 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 251 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 249 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 252 | 1 | 1 | | dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 | uint8 | dhw.altopprioheat | prioritise heating during dhw | uint8 (>=20<=120) | minutes | true | DHW | 16 | 1 | 1 | @@ -3898,37 +4013,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -3967,11 +4082,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4025,10 +4145,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -4051,37 +4171,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4120,11 +4240,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4178,10 +4303,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -4204,37 +4329,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4273,11 +4398,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4331,10 +4461,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -4357,37 +4487,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4426,11 +4556,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4484,10 +4619,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -4510,37 +4645,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4579,11 +4714,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4637,10 +4777,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -4663,37 +4803,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -4732,11 +4872,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4790,10 +4935,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -4801,14 +4946,14 @@ uint24 | shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | |-|-|-|-|-|-|-|-|-| -| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 276 | 1 | 1/10 | -| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 277 | 1 | 1 | +| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 279 | 1 | 1/10 | +| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 280 | 1 | 1 | | dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | uint8 -| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 278 | 1 | 1 | +| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 281 | 1 | 1 | uint8 -| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 279 | 1 | 1 | -| heating | heating | boolean | | false | DEVICE_DATA | 280 | 1 | 1 | +| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 282 | 1 | 1 | +| heating | heating | boolean | | false | DEVICE_DATA | 283 | 1 | 1 | | reset | reset | cmd | | true | DEVICE_DATA | 0 | 1 | 1 | | chimneysweeper | chimney sweeper | cmd | | true | DEVICE_DATA | 1 | 1 | 1 | | heatingoff | force heating off | boolean | | true | DEVICE_DATA | 2 | 1 | 1 | @@ -4862,11 +5007,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -4939,37 +5089,37 @@ uint8 | syspress | system pressure | uint8 | bar | false | DEVICE_DATA | 11 | 1 | 1/10 | | boiltemp | actual boiler temperature | uint16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | | headertemp | low loss header | uint16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | -| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 250 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 251 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 252 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 253 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 253 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 254 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 256 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 260 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 | -| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 261 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 262 | 1 | 1 | +| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 263 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 264 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 265 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 268 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 269 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 270 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 273 | 1 | 1 | | heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | uint8 | heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | @@ -5008,11 +5158,16 @@ uint8 | pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | | pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 | | pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 84 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 85 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 86 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 100 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 274 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | | dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | | dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | | dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | @@ -5066,10 +5221,10 @@ uint8 | dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | | dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | uint8 -| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 275 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 278 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 88 | 2 | 1/100 | uint24 -| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 | +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 90 | 2 | 1/100 | uint24 | dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | @@ -5152,82 +5307,84 @@ uint8 int8 | hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 | -| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 14 | 1 | 1 | +uint8 +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 15 | 1 | 1/10 | +| hc1.curroominfl | current room influence | int16 | C | false | HC | 16 | 1 | 1/10 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 | -| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 | -| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.summersetmode | set summer mode | enum | | true | HC | 21 | 1 | 1 | +| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 24 | 1 | 1 | +| hc1.vacationmode | vacation mode | boolean | | false | HC | 25 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | int8 -| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | uint8 -| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 31 | 1 | 1 | int8 -| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 32 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 36 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 38 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 39 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 40 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 42 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 43 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 49 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 50 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 54 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 55 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 56 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 58 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 59 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 60 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 61 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 62 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -5258,8 +5415,8 @@ int16 | hc1.currtemp | current room temperature | int16 | C | false | HC | 1 | 1 | 1/10 | | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | ### RC10 @@ -5277,20 +5434,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 28 | 1 | 1/2 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | ### RC30 @@ -5319,56 +5476,56 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 64 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 65 | 1 | 1/2 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 18 | 1 | 1 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 14 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 67 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 68 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 81 | 13 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 95 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 36 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 96 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 97 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 98 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 106 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -5400,16 +5557,16 @@ int16 uint8 | hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | uint8 -| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | +| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | uint8 -| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | +| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | uint8 -| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | +| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | uint8 -| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | +| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 117 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | -| hc1.switchtime | program switchtime | string | | true | HC | 117 | 8 | 1 | +| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.switchtime | program switchtime | string | | true | HC | 118 | 8 | 1 | ### Moduline 400 @@ -5438,34 +5595,34 @@ int16 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=0) | hours | true | HC | 93 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=0) | hours | true | HC | 94 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=0) | hours | true | HC | 94 | 1 | 1 | -| hc1.vacations1 | vacation dates 1 | string | | true | HC | 125 | 11 | 1 | -| hc1.vacations2 | vacation dates 2 | string | | true | HC | 136 | 11 | 1 | -| hc1.vacations3 | vacation dates 3 | string | | true | HC | 147 | 11 | 1 | -| hc1.vacations4 | vacation dates 4 | string | | true | HC | 158 | 11 | 1 | -| hc1.vacations5 | vacation dates 5 | string | | true | HC | 169 | 11 | 1 | -| hc1.vacations6 | vacation dates 6 | string | | true | HC | 180 | 11 | 1 | -| hc1.vacations7 | vacation dates 7 | string | | true | HC | 191 | 11 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=0) | hours | true | HC | 95 | 1 | 1 | +| hc1.vacations1 | vacation dates 1 | string | | true | HC | 126 | 11 | 1 | +| hc1.vacations2 | vacation dates 2 | string | | true | HC | 137 | 11 | 1 | +| hc1.vacations3 | vacation dates 3 | string | | true | HC | 148 | 11 | 1 | +| hc1.vacations4 | vacation dates 4 | string | | true | HC | 159 | 11 | 1 | +| hc1.vacations5 | vacation dates 5 | string | | true | HC | 170 | 11 | 1 | +| hc1.vacations6 | vacation dates 6 | string | | true | HC | 181 | 11 | 1 | +| hc1.vacations7 | vacation dates 7 | string | | true | HC | 192 | 11 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 98 | 8 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.holidaytemp | holiday temperature | uint8 (>=0<=0) | C | true | HC | 65 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | +| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | uint8 -| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | +| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | uint8 -| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | +| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | uint8 -| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | +| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 117 | 1 | 1/2 | uint8 | hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | uint8 -| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | +| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.whenmodeoff | when thermostat mode off | boolean | | true | DHW | 60 | 1 | 1 | | dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | @@ -5489,12 +5646,12 @@ int16 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | uint8 -| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 202 | 1 | 1 | -| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 203 | 1 | 1 | +| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 203 | 1 | 1 | +| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 204 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | @@ -5508,20 +5665,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 28 | 1 | 1/2 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | ### Moduline 200 @@ -5539,12 +5696,12 @@ int16 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | uint8 -| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 202 | 1 | 1 | -| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 203 | 1 | 1 | +| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 203 | 1 | 1 | +| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 204 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | ### RC35 @@ -5570,56 +5727,56 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 64 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 65 | 1 | 1/2 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 18 | 1 | 1 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 14 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 67 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 68 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 81 | 13 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 95 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 36 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 96 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 97 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 98 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 106 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -5651,16 +5808,16 @@ int16 uint8 | hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | uint8 -| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 | +| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | uint8 -| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 | +| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | uint8 -| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 115 | 1 | 1/2 | +| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | uint8 -| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 116 | 1 | 1/2 | +| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 117 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | -| hc1.switchtime | program switchtime | string | | true | HC | 117 | 8 | 1 | +| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.switchtime | program switchtime | string | | true | HC | 118 | 8 | 1 | ### RFM20 Remote @@ -5690,20 +5847,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 28 | 1 | 1/2 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | ### RC200, CW100, CR120, CR50 @@ -5761,80 +5918,82 @@ uint8 int8 | hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 | -| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 14 | 1 | 1 | +uint8 +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 15 | 1 | 1/10 | +| hc1.curroominfl | current room influence | int16 | C | false | HC | 16 | 1 | 1/10 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 | -| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 | -| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.summersetmode | set summer mode | enum | | true | HC | 21 | 1 | 1 | +| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 24 | 1 | 1 | +| hc1.vacationmode | vacation mode | boolean | | false | HC | 25 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | int8 -| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | uint8 -| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 31 | 1 | 1 | int8 -| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 32 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 36 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 38 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 39 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 40 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 42 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 43 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 49 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 50 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 54 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 55 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 56 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 58 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 59 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 60 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 61 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 62 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -5909,82 +6068,84 @@ uint8 int8 | hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 | -| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 14 | 1 | 1 | +uint8 +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 15 | 1 | 1/10 | +| hc1.curroominfl | current room influence | int16 | C | false | HC | 16 | 1 | 1/10 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 | -| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 | -| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.summersetmode | set summer mode | enum | | true | HC | 21 | 1 | 1 | +| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 24 | 1 | 1 | +| hc1.vacationmode | vacation mode | boolean | | false | HC | 25 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | int8 -| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | uint8 -| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 31 | 1 | 1 | int8 -| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 32 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 36 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 38 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 39 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 40 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 42 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 43 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 49 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 50 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 54 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 55 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 56 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 58 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 59 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 60 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 61 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 62 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -6015,8 +6176,8 @@ int16 | hc1.currtemp | current room temperature | int16 | C | false | HC | 1 | 1 | 1/10 | | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | ### Rego 2000/3000 @@ -6074,82 +6235,84 @@ uint8 int8 | hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 | -| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 14 | 1 | 1 | +uint8 +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 15 | 1 | 1/10 | +| hc1.curroominfl | current room influence | int16 | C | false | HC | 16 | 1 | 1/10 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 | -| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 | -| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.summersetmode | set summer mode | enum | | true | HC | 21 | 1 | 1 | +| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 24 | 1 | 1 | +| hc1.vacationmode | vacation mode | boolean | | false | HC | 25 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | int8 -| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | uint8 -| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 31 | 1 | 1 | int8 -| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 32 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 36 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 38 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 39 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 40 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 42 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 43 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 49 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 50 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 54 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 55 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 56 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 58 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 59 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 60 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 61 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 62 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -6181,7 +6344,7 @@ uint8 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | false | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | ### CRF200S @@ -6195,7 +6358,7 @@ uint8 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | false | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | ### Comfort+2RF @@ -6209,7 +6372,7 @@ uint8 | hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | | hc1.mode | operating mode | enum | | false | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | ### Rego 3000, UI800, Logamatic BC400 @@ -6266,82 +6429,84 @@ uint8 int8 | hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 | -| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 14 | 1 | 1 | +uint8 +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 15 | 1 | 1/10 | +| hc1.curroominfl | current room influence | int16 | C | false | HC | 16 | 1 | 1/10 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 | -| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 | -| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.summersetmode | set summer mode | enum | | true | HC | 21 | 1 | 1 | +| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 24 | 1 | 1 | +| hc1.vacationmode | vacation mode | boolean | | false | HC | 25 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | int8 -| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 | +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | uint8 -| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 | +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | uint8 -| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 30 | 1 | 1 | +| hc1.comfoffset | comfort point offset | uint8 (>=0<=10) | C | true | HC | 31 | 1 | 1 | int8 -| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 31 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | +| hc1.comftemp | comfort point temperature | int8 (>=-5<=15) | C | true | HC | 32 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 35 | 1 | 1 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.hpcooling | hp cooling | boolean | | true | HC | 37 | 1 | 1 | -| hc1.coolingon | cooling on | boolean | | false | HC | 38 | 1 | 1 | -| hc1.hpmode | HP Mode | enum | | true | HC | 39 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 36 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.hpcooling | hp cooling | boolean | | true | HC | 38 | 1 | 1 | +| hc1.coolingon | cooling on | boolean | | false | HC | 39 | 1 | 1 | +| hc1.hpmode | HP Mode | enum | | true | HC | 40 | 1 | 1 | uint8 -| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 40 | 1 | 1 | +| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 41 | 1 | 1 | uint8 -| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 41 | 1 | 1 | +| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 42 | 1 | 1 | uint8 -| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 42 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 45 | 1 | 1 | +| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 43 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 46 | 1 | 1 | uint8 -| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 46 | 1 | 1 | +| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | uint8 -| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 47 | 1 | 1 | +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | uint8 -| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 48 | 1 | 1 | -| hc1.boost | boost mode | boolean | | true | HC | 49 | 1 | 1 | +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 49 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 50 | 1 | 1 | uint8 -| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 50 | 1 | 1 | +| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 51 | 1 | 1 | uint8 -| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 51 | 1 | 1 | +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | uint8 -| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 52 | 1 | 1 | +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | uint8 -| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 53 | 1 | 1 | -| hc1.switchprogmode | switch program mode | enum | | true | HC | 54 | 1 | 1 | +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 54 | 1 | 1 | +| hc1.switchprogmode | switch program mode | enum | | true | HC | 55 | 1 | 1 | int8 -| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 55 | 1 | 1/2 | +| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 56 | 1 | 1/2 | uint8 -| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 56 | 1 | 1 | -| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 57 | 1 | 1/10 | -| hc1.heatingpid | heating PID | enum | | true | HC | 58 | 1 | 1 | -| hc1.pumpopt | pump optimization | boolean | | true | HC | 59 | 1 | 1 | +| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 58 | 1 | 1/10 | +| hc1.heatingpid | heating PID | enum | | true | HC | 59 | 1 | 1 | +| hc1.pumpopt | pump optimization | boolean | | true | HC | 60 | 1 | 1 | uint8 -| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 60 | 1 | 10 | +| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 61 | 1 | 10 | uint8 -| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 61 | 1 | 1 | +| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 62 | 1 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.modetype | mode type | enum | | false | DHW | 1 | 1 | 1 | uint8 @@ -6377,20 +6542,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 28 | 1 | 1/2 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | | datetime | date/time | string | | false | DEVICE_DATA | 33 | 13 | 1 | @@ -6403,20 +6568,20 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 63 | 1 | 1/2 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 64 | 1 | 1/2 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 28 | 1 | 1/2 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | ### ES73 @@ -6445,56 +6610,56 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 64 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 65 | 1 | 1/2 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 18 | 1 | 1 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 14 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 67 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 68 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 81 | 13 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 95 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 36 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 96 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 97 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 98 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 106 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -6534,56 +6699,56 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 62 | 1 | 1/2 | +| hc1.daytemp | day temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | uint8 -| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 63 | 1 | 1/2 | +| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 64 | 1 | 1/2 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | int8 | hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 | uint8 -| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 64 | 1 | 1/2 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 65 | 1 | 1/2 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 | -| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 | -| hc1.holidaymode | holiday mode | boolean | | false | HC | 65 | 1 | 1 | +| hc1.summermode | summer mode | enum | | false | HC | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 | -| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 18 | 1 | 1 | +| hc1.nofrostmode | nofrost mode | enum | | true | HC | 17 | 1 | 1 | uint8 -| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 14 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 -| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 66 | 1 | 1 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.reducemode | reduce mode | enum | | true | HC | 33 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.holidays | holiday dates | string | | true | HC | 67 | 13 | 1 | -| hc1.vacations | vacation dates | string | | true | HC | 80 | 13 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 67 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.reducemode | reduce mode | enum | | true | HC | 34 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.holidays | holiday dates | string | | true | HC | 68 | 13 | 1 | +| hc1.vacations | vacation dates | string | | true | HC | 81 | 13 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | uint8 -| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 93 | 1 | 1 | +| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | uint8 -| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 94 | 1 | 1 | +| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 95 | 1 | 1 | uint8 -| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 | +| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 28 | 1 | 1/2 | int8 -| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 34 | 1 | 1 | +| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 35 | 1 | 1 | int8 -| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 35 | 1 | 1 | +| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 36 | 1 | 1 | int8 -| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 95 | 1 | 1 | -| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 96 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.dhwprio | dhw priority | boolean | | true | HC | 36 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 97 | 8 | 1 | -| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 105 | 8 | 1 | +| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 96 | 1 | 1 | +| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 97 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 37 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 98 | 8 | 1 | +| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 106 | 8 | 1 | | dhw.mode | operating mode | enum | | true | DHW | 0 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | | dhw.progmode | program | enum | | true | DHW | 13 | 1 | 1 | @@ -6609,6 +6774,10 @@ uint8 | datetime | date/time | string | | true | DEVICE_DATA | 33 | 13 | 1 | | display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | | language | language | enum | | true | DEVICE_DATA | 66 | 1 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -6629,32 +6798,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FW200 @@ -6666,6 +6835,10 @@ uint8 | datetime | date/time | string | | true | DEVICE_DATA | 33 | 13 | 1 | | display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | | language | language | enum | | true | DEVICE_DATA | 66 | 1 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -6686,32 +6859,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FR100 @@ -6721,6 +6894,10 @@ uint8 | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | | datetime | date/time | string | | false | DEVICE_DATA | 33 | 13 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -6741,32 +6918,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FR110 @@ -6776,6 +6953,10 @@ uint8 | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | | datetime | date/time | string | | false | DEVICE_DATA | 33 | 13 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -6796,32 +6977,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FB10 @@ -6833,6 +7014,10 @@ uint8 | datetime | date/time | string | | true | DEVICE_DATA | 33 | 13 | 1 | | display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | | language | language | enum | | true | DEVICE_DATA | 66 | 1 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -6853,32 +7038,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FB100 @@ -6890,6 +7075,10 @@ uint8 | datetime | date/time | string | | true | DEVICE_DATA | 33 | 13 | 1 | | display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | | language | language | enum | | true | DEVICE_DATA | 66 | 1 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -6910,32 +7099,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FR10 @@ -6945,6 +7134,10 @@ uint8 | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | | datetime | date/time | string | | false | DEVICE_DATA | 33 | 13 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -6965,32 +7158,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FW500 @@ -7002,6 +7195,10 @@ uint8 | datetime | date/time | string | | true | DEVICE_DATA | 33 | 13 | 1 | | display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | | language | language | enum | | true | DEVICE_DATA | 66 | 1 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -7022,32 +7219,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FR50 @@ -7057,6 +7254,10 @@ uint8 | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | | datetime | date/time | string | | false | DEVICE_DATA | 33 | 13 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -7077,32 +7278,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FR120 @@ -7112,6 +7313,10 @@ uint8 | errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | | lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | | datetime | date/time | string | | false | DEVICE_DATA | 33 | 13 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -7132,32 +7337,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### FW120 @@ -7169,6 +7374,10 @@ uint8 | datetime | date/time | string | | true | DEVICE_DATA | 33 | 13 | 1 | | display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | | language | language | enum | | true | DEVICE_DATA | 66 | 1 | 1 | +uint8 +| building | building type | uint8 (>=0<=0) | % | true | DEVICE_DATA | 50 | 1 | 10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | | hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 54 | 1 | 1 | int8 | switchovertemp | outside switchover temperature | int8 (>=-20<=20) | C | true | DEVICE_DATA | 55 | 1 | 1 | @@ -7189,32 +7398,32 @@ int16 | hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 | | hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | uint8 -| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 204 | 1 | 1/2 | +| hc1.heattemp | heat temperature | uint8 (>=0<=0) | C | true | HC | 205 | 1 | 1/2 | uint8 | hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | int8 -| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 | -| hc1.control | control device | enum | | true | HC | 43 | 1 | 1 | -| hc1.program | program | enum | | true | HC | 26 | 1 | 1 | -| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 44 | 1 | 1/10 | -| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 | +| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 18 | 1 | 1/2 | +| hc1.control | control device | enum | | true | HC | 44 | 1 | 1 | +| hc1.program | program | enum | | true | HC | 27 | 1 | 1 | +| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 45 | 1 | 1/10 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | uint8 | hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 | -| hc1.roomsensor | room sensor | enum | | true | HC | 205 | 1 | 1 | -| hc1.holidaymode | holiday mode | enum | | true | HC | 65 | 1 | 1 | -| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 32 | 1 | 1 | -| hc1.heatup | heatup | enum | | true | HC | 206 | 1 | 1 | +| hc1.roomsensor | room sensor | enum | | true | HC | 206 | 1 | 1 | +| hc1.holidaymode | holiday mode | enum | | true | HC | 66 | 1 | 1 | +| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 33 | 1 | 1 | +| hc1.heatup | heatup | enum | | true | HC | 207 | 1 | 1 | uint8 -| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 | +| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 12 | 1 | 1 | uint8 -| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 | +| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 13 | 1 | 1 | uint8 | hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 | -| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 | +| hc1.roominfluence | room influence | enum | | true | HC | 14 | 1 | 1 | uint8 -| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 | -| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 | -| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 | +| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 15 | 1 | 10 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | +| hc1.controlmode | control mode | enum | | true | HC | 26 | 1 | 1 | | dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | ### RT800, RC220 diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index ef7d15df2..943b1d5ef 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -1,5 +1,5 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/max),uom,writeable,discovery entityid v3.4,discovery entityid,modbus unit identifier,modbus block,modbus scale factor,modbus offset,modbus count -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -43,123 +43,126 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,87,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,90,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,92,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,94,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,96,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,98,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,100,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,102,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,104,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,106,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,108,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,110,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.uptimecomp,operating time compressor,time,minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,112,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,114,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,116,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,118,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,120,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,122,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,124,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,126,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrgconscomp,energy consumption compressor,uint24,kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,128,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,130,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,132,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,134,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,136,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,138,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,140,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrgsupp,total energy warm supplied,uint24,kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,146,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,147,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,148,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,149,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,151,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,174,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,175,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,176,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,184,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,185,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,193,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,194,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,202,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,203,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatcomp,heat limit compressor,enum [0 kW\|3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,211,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatheat,heat limit heating,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,212,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,142,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,144,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,146,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,147,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,148,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,149,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,150,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,151,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,152,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,153,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,154,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,155,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,156,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,157,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,158,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,159,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,160,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,161,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,162,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,163,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,164,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,165,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,166,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,167,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,168,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,169,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,170,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,171,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,172,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,173,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,174,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,175,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,176,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,177,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,178,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,179,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,187,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,188,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,196,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,197,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,205,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,206,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatcomp,heat limit compressor,enum [0 kW\|3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,214,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatheat,heat limit heating,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,215,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxheat,heat limit,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,213,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,214,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,215,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,216,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,217,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,218,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,219,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,220,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,221,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,222,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,223,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,224,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,225,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,226,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,227,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,228,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,229,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,230,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,231,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,232,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,233,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,234,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,235,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,236,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,237,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,238,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,239,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,240,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,241,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,242,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,243,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,244,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,245,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,246,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,247,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,248,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,249,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,216,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,217,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,218,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,219,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,220,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,221,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,222,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,223,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,224,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,225,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,226,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,227,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,228,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,229,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,230,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,231,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,232,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,233,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,234,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,235,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,236,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,237,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,238,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,239,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,240,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,241,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,242,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,243,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,244,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,245,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,246,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,247,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,248,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,249,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,250,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,251,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,252,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1 @@ -214,7 +217,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Greenstar 2000",boiler,11,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Greenstar 2000",boiler,11,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Greenstar 2000",boiler,11,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Greenstar 2000",boiler,11,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Greenstar 2000",boiler,11,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -228,27 +231,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Greenstar 2000",boiler,11,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Greenstar 2000",boiler,11,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Greenstar 2000",boiler,11,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Greenstar 2000",boiler,11,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Greenstar 2000",boiler,11,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Greenstar 2000",boiler,11,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Greenstar 2000",boiler,11,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Greenstar 2000",boiler,11,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Greenstar 2000",boiler,11,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Greenstar 2000",boiler,11,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Greenstar 2000",boiler,11,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -279,11 +282,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Greenstar 2000",boiler,11,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Greenstar 2000",boiler,11,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Greenstar 2000",boiler,11,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Greenstar 2000",boiler,11,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Greenstar 2000",boiler,11,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -326,11 +332,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Greenstar 2000",boiler,11,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"C1200W",boiler,12,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"C1200W",boiler,12,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "C1200W",boiler,12,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "C1200W",boiler,12,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "C1200W",boiler,12,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -344,27 +350,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "C1200W",boiler,12,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "C1200W",boiler,12,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"C1200W",boiler,12,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"C1200W",boiler,12,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"C1200W",boiler,12,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"C1200W",boiler,12,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"C1200W",boiler,12,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"C1200W",boiler,12,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "C1200W",boiler,12,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "C1200W",boiler,12,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "C1200W",boiler,12,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -395,11 +401,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "C1200W",boiler,12,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "C1200W",boiler,12,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"C1200W",boiler,12,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"C1200W",boiler,12,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"C1200W",boiler,12,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -442,11 +451,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "C1200W",boiler,12,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"CS5800iG",boiler,16,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"CS5800iG",boiler,16,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "CS5800iG",boiler,16,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "CS5800iG",boiler,16,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "CS5800iG",boiler,16,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -460,27 +469,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "CS5800iG",boiler,16,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "CS5800iG",boiler,16,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"CS5800iG",boiler,16,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"CS5800iG",boiler,16,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"CS5800iG",boiler,16,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"CS5800iG",boiler,16,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"CS5800iG",boiler,16,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"CS5800iG",boiler,16,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "CS5800iG",boiler,16,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "CS5800iG",boiler,16,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "CS5800iG",boiler,16,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -511,11 +520,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "CS5800iG",boiler,16,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "CS5800iG",boiler,16,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"CS5800iG",boiler,16,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"CS5800iG",boiler,16,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"CS5800iG",boiler,16,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -558,11 +570,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "CS5800iG",boiler,16,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "BK13/BK15, Smartline, GB1*2",boiler,64,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -576,27 +588,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "BK13/BK15, Smartline, GB1*2",boiler,64,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "BK13/BK15, Smartline, GB1*2",boiler,64,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -627,11 +639,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "BK13/BK15, Smartline, GB1*2",boiler,64,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "BK13/BK15, Smartline, GB1*2",boiler,64,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -674,11 +689,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Logano GB1*5, Logamatic MC10",boiler,72,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Logano GB1*5, Logamatic MC10",boiler,72,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Logano GB1*5, Logamatic MC10",boiler,72,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -692,27 +707,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logano GB1*5, Logamatic MC10",boiler,72,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logano GB1*5, Logamatic MC10",boiler,72,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logano GB1*5, Logamatic MC10",boiler,72,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logano GB1*5, Logamatic MC10",boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logano GB1*5, Logamatic MC10",boiler,72,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Logano GB1*5, Logamatic MC10",boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -743,11 +758,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Logano GB1*5, Logamatic MC10",boiler,72,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Logano GB1*5, Logamatic MC10",boiler,72,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -790,11 +808,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Cascade CM10",boiler,81,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Cascade CM10",boiler,81,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Cascade CM10",boiler,81,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Cascade CM10",boiler,81,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Cascade CM10",boiler,81,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -808,27 +826,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cascade CM10",boiler,81,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cascade CM10",boiler,81,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cascade CM10",boiler,81,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cascade CM10",boiler,81,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cascade CM10",boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Cascade CM10",boiler,81,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Cascade CM10",boiler,81,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Cascade CM10",boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Cascade CM10",boiler,81,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade CM10",boiler,81,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade CM10",boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -859,11 +877,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Cascade CM10",boiler,81,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Cascade CM10",boiler,81,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Cascade CM10",boiler,81,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Cascade CM10",boiler,81,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Cascade CM10",boiler,81,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -906,11 +927,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Cascade CM10",boiler,81,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Logamax Plus GB022",boiler,84,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Logamax Plus GB022",boiler,84,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Logamax Plus GB022",boiler,84,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Logamax Plus GB022",boiler,84,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Logamax Plus GB022",boiler,84,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -924,27 +945,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax Plus GB022",boiler,84,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax Plus GB022",boiler,84,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax Plus GB022",boiler,84,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax Plus GB022",boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Logamax Plus GB022",boiler,84,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Logamax Plus GB022",boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Logamax Plus GB022",boiler,84,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus GB022",boiler,84,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus GB022",boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -975,11 +996,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Logamax Plus GB022",boiler,84,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Logamax Plus GB022",boiler,84,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Logamax Plus GB022",boiler,84,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Logamax Plus GB022",boiler,84,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Logamax Plus GB022",boiler,84,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus GB022",boiler,84,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus GB022",boiler,84,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1022,11 +1046,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus GB022",boiler,84,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Logamax Plus GB022",boiler,84,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1040,27 +1064,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1091,11 +1115,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1138,11 +1165,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Topline, GB162",boiler,115,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Topline, GB162",boiler,115,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Topline, GB162",boiler,115,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Topline, GB162",boiler,115,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Topline, GB162",boiler,115,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1156,27 +1183,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Topline, GB162",boiler,115,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Topline, GB162",boiler,115,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Topline, GB162",boiler,115,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Topline, GB162",boiler,115,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Topline, GB162",boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Topline, GB162",boiler,115,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Topline, GB162",boiler,115,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Topline, GB162",boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Topline, GB162",boiler,115,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Topline, GB162",boiler,115,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Topline, GB162",boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1207,11 +1234,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Topline, GB162",boiler,115,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Topline, GB162",boiler,115,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Topline, GB162",boiler,115,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Topline, GB162",boiler,115,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Topline, GB162",boiler,115,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1254,11 +1284,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Topline, GB162",boiler,115,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Cascade MCM10",boiler,121,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Cascade MCM10",boiler,121,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Cascade MCM10",boiler,121,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Cascade MCM10",boiler,121,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Cascade MCM10",boiler,121,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1272,27 +1302,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cascade MCM10",boiler,121,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cascade MCM10",boiler,121,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cascade MCM10",boiler,121,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cascade MCM10",boiler,121,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cascade MCM10",boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Cascade MCM10",boiler,121,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Cascade MCM10",boiler,121,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Cascade MCM10",boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Cascade MCM10",boiler,121,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade MCM10",boiler,121,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade MCM10",boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1323,11 +1353,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Cascade MCM10",boiler,121,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Cascade MCM10",boiler,121,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Cascade MCM10",boiler,121,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Cascade MCM10",boiler,121,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Cascade MCM10",boiler,121,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1370,11 +1403,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Cascade MCM10",boiler,121,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Proline",boiler,122,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Proline",boiler,122,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Proline",boiler,122,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Proline",boiler,122,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Proline",boiler,122,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1388,27 +1421,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Proline",boiler,122,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Proline",boiler,122,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Proline",boiler,122,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Proline",boiler,122,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Proline",boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Proline",boiler,122,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Proline",boiler,122,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Proline",boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Proline",boiler,122,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Proline",boiler,122,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Proline",boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1439,11 +1472,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Proline",boiler,122,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Proline",boiler,122,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Proline",boiler,122,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Proline",boiler,122,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Proline",boiler,122,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Proline",boiler,122,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1486,11 +1522,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Proline",boiler,122,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1504,27 +1540,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1555,11 +1591,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1602,11 +1641,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"GB212",boiler,131,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"GB212",boiler,131,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "GB212",boiler,131,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "GB212",boiler,131,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "GB212",boiler,131,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1620,27 +1659,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "GB212",boiler,131,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "GB212",boiler,131,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"GB212",boiler,131,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"GB212",boiler,131,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"GB212",boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"GB212",boiler,131,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"GB212",boiler,131,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"GB212",boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "GB212",boiler,131,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GB212",boiler,131,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GB212",boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1671,11 +1710,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "GB212",boiler,131,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "GB212",boiler,131,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"GB212",boiler,131,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"GB212",boiler,131,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"GB212",boiler,131,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GB212",boiler,131,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1718,11 +1760,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "GB212",boiler,131,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"GC7000F",boiler,132,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"GC7000F",boiler,132,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "GC7000F",boiler,132,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "GC7000F",boiler,132,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "GC7000F",boiler,132,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1736,27 +1778,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "GC7000F",boiler,132,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "GC7000F",boiler,132,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"GC7000F",boiler,132,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"GC7000F",boiler,132,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"GC7000F",boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"GC7000F",boiler,132,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"GC7000F",boiler,132,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"GC7000F",boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "GC7000F",boiler,132,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "GC7000F",boiler,132,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "GC7000F",boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1787,11 +1829,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "GC7000F",boiler,132,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "GC7000F",boiler,132,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"GC7000F",boiler,132,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"GC7000F",boiler,132,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"GC7000F",boiler,132,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1834,11 +1879,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "GC7000F",boiler,132,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1852,27 +1897,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -1903,11 +1948,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -1950,11 +1998,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Greenstar 30Ri Compact",boiler,154,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Greenstar 30Ri Compact",boiler,154,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Greenstar 30Ri Compact",boiler,154,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Greenstar 30Ri Compact",boiler,154,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Greenstar 30Ri Compact",boiler,154,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -1968,27 +2016,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Greenstar 30Ri Compact",boiler,154,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Greenstar 30Ri Compact",boiler,154,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Greenstar 30Ri Compact",boiler,154,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Greenstar 30Ri Compact",boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Greenstar 30Ri Compact",boiler,154,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Greenstar 30Ri Compact",boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Greenstar 30Ri Compact",boiler,154,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Greenstar 30Ri Compact",boiler,154,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Greenstar 30Ri Compact",boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2019,11 +2067,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Greenstar 30Ri Compact",boiler,154,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Greenstar 30Ri Compact",boiler,154,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Greenstar 30Ri Compact",boiler,154,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Greenstar 30Ri Compact",boiler,154,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Greenstar 30Ri Compact",boiler,154,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar 30Ri Compact",boiler,154,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar 30Ri Compact",boiler,154,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2066,11 +2117,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Suprapur-o",boiler,155,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Suprapur-o",boiler,155,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Suprapur-o",boiler,155,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Suprapur-o",boiler,155,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Suprapur-o",boiler,155,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -2084,27 +2135,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Suprapur-o",boiler,155,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Suprapur-o",boiler,155,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Suprapur-o",boiler,155,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Suprapur-o",boiler,155,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Suprapur-o",boiler,155,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Suprapur-o",boiler,155,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Suprapur-o",boiler,155,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Suprapur-o",boiler,155,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Suprapur-o",boiler,155,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Suprapur-o",boiler,155,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Suprapur-o",boiler,155,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2135,11 +2186,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Suprapur-o",boiler,155,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Suprapur-o",boiler,155,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Suprapur-o",boiler,155,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Suprapur-o",boiler,155,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Suprapur-o",boiler,155,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2182,11 +2236,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Suprapur-o",boiler,155,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Cerapur Aero",boiler,167,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Cerapur Aero",boiler,167,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Cerapur Aero",boiler,167,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Cerapur Aero",boiler,167,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Cerapur Aero",boiler,167,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -2200,27 +2254,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cerapur Aero",boiler,167,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cerapur Aero",boiler,167,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cerapur Aero",boiler,167,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cerapur Aero",boiler,167,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cerapur Aero",boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Cerapur Aero",boiler,167,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Cerapur Aero",boiler,167,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Cerapur Aero",boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Cerapur Aero",boiler,167,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cerapur Aero",boiler,167,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cerapur Aero",boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2251,11 +2305,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Cerapur Aero",boiler,167,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Cerapur Aero",boiler,167,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Cerapur Aero",boiler,167,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Cerapur Aero",boiler,167,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Cerapur Aero",boiler,167,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2298,11 +2355,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Cerapur Aero",boiler,167,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Hybrid Heatpump",boiler,168,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Hybrid Heatpump",boiler,168,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Hybrid Heatpump",boiler,168,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Hybrid Heatpump",boiler,168,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Hybrid Heatpump",boiler,168,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -2316,27 +2373,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Hybrid Heatpump",boiler,168,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Hybrid Heatpump",boiler,168,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Hybrid Heatpump",boiler,168,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Hybrid Heatpump",boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Hybrid Heatpump",boiler,168,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Hybrid Heatpump",boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Hybrid Heatpump",boiler,168,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Hybrid Heatpump",boiler,168,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Hybrid Heatpump",boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2367,11 +2424,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Hybrid Heatpump",boiler,168,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Hybrid Heatpump",boiler,168,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Hybrid Heatpump",boiler,168,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Hybrid Heatpump",boiler,168,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Hybrid Heatpump",boiler,168,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2414,11 +2474,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Hybrid Heatpump",boiler,168,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Logano GB212",boiler,170,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Logano GB212",boiler,170,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Logano GB212",boiler,170,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Logano GB212",boiler,170,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Logano GB212",boiler,170,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -2432,27 +2492,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logano GB212",boiler,170,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logano GB212",boiler,170,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logano GB212",boiler,170,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logano GB212",boiler,170,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logano GB212",boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Logano GB212",boiler,170,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Logano GB212",boiler,170,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Logano GB212",boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Logano GB212",boiler,170,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logano GB212",boiler,170,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logano GB212",boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -2483,11 +2543,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Logano GB212",boiler,170,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Logano GB212",boiler,170,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Logano GB212",boiler,170,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Logano GB212",boiler,170,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Logano GB212",boiler,170,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -2530,11 +2593,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Logano GB212",boiler,170,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -2578,123 +2641,126 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,87,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,90,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,92,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,94,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,96,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,98,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,100,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,102,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,104,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,106,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,108,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,110,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.uptimecomp,operating time compressor,time,minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,112,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,114,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,116,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,118,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,120,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,122,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,124,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,126,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrgconscomp,energy consumption compressor,uint24,kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,128,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,130,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,132,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,134,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,136,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,138,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,140,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrgsupp,total energy warm supplied,uint24,kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,146,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,147,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,148,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,149,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,151,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,174,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,175,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,176,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,184,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,185,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,193,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,194,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,202,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,203,8 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,211,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,212,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,142,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,144,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,146,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,147,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,148,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,149,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,150,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,151,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,152,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,153,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,154,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,155,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,156,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,157,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,158,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,159,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,160,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,161,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,162,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,163,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,164,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,165,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,166,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,167,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,168,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,169,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,170,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,171,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,172,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,173,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,174,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,175,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,176,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,177,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,178,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,179,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,187,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,188,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,196,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,197,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,205,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,206,8 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,214,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,215,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,213,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,214,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,215,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,216,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,217,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,218,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,219,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,220,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,221,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,222,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,223,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,224,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,225,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,226,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,227,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,228,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,229,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,230,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,231,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,232,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,233,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,234,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,235,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,236,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,237,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,238,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,239,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,240,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,241,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,242,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,243,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,244,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,245,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,246,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,247,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,248,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,249,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,216,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,217,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,218,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,219,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,220,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,221,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,222,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,223,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,224,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,225,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,226,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,227,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,228,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,229,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,230,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,231,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,232,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,233,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,234,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,235,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,236,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,237,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,238,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,239,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,240,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,241,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,242,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,243,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,244,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,245,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,246,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,247,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,248,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,249,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,250,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,251,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,252,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1 @@ -2749,7 +2815,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Geo 5xx",boiler,173,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Geo 5xx",boiler,173,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Geo 5xx",boiler,173,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Geo 5xx",boiler,173,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Geo 5xx",boiler,173,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -2793,123 +2859,126 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Geo 5xx",boiler,173,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Geo 5xx",boiler,173,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Geo 5xx",boiler,173,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1 -"Geo 5xx",boiler,173,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 +"Geo 5xx",boiler,173,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Geo 5xx",boiler,173,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Geo 5xx",boiler,173,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Geo 5xx",boiler,173,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,87,1 +"Geo 5xx",boiler,173,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 "Geo 5xx",boiler,173,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2 -"Geo 5xx",boiler,173,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2 -"Geo 5xx",boiler,173,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2 -"Geo 5xx",boiler,173,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2 -"Geo 5xx",boiler,173,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2 -"Geo 5xx",boiler,173,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2 -"Geo 5xx",boiler,173,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2 -"Geo 5xx",boiler,173,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2 +"Geo 5xx",boiler,173,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,90,2 +"Geo 5xx",boiler,173,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,92,2 +"Geo 5xx",boiler,173,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,94,2 +"Geo 5xx",boiler,173,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,96,2 +"Geo 5xx",boiler,173,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,98,2 +"Geo 5xx",boiler,173,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,100,2 +"Geo 5xx",boiler,173,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,102,2 "Geo 5xx",boiler,173,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2 -"Geo 5xx",boiler,173,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2 -"Geo 5xx",boiler,173,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2 -"Geo 5xx",boiler,173,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2 -"Geo 5xx",boiler,173,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2 +"Geo 5xx",boiler,173,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,104,2 +"Geo 5xx",boiler,173,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,106,2 +"Geo 5xx",boiler,173,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,108,2 +"Geo 5xx",boiler,173,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,110,2 "Geo 5xx",boiler,173,dhw.uptimecomp,operating time compressor,time,minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2 -"Geo 5xx",boiler,173,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2 -"Geo 5xx",boiler,173,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2 -"Geo 5xx",boiler,173,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2 -"Geo 5xx",boiler,173,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2 +"Geo 5xx",boiler,173,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,112,2 +"Geo 5xx",boiler,173,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,114,2 +"Geo 5xx",boiler,173,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,116,2 +"Geo 5xx",boiler,173,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,118,2 "Geo 5xx",boiler,173,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2 -"Geo 5xx",boiler,173,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2 -"Geo 5xx",boiler,173,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2 -"Geo 5xx",boiler,173,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2 -"Geo 5xx",boiler,173,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2 +"Geo 5xx",boiler,173,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,120,2 +"Geo 5xx",boiler,173,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,122,2 +"Geo 5xx",boiler,173,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,124,2 +"Geo 5xx",boiler,173,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,126,2 "Geo 5xx",boiler,173,dhw.nrgconscomp,energy consumption compressor,uint24,kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2 -"Geo 5xx",boiler,173,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2 -"Geo 5xx",boiler,173,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2 -"Geo 5xx",boiler,173,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2 -"Geo 5xx",boiler,173,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2 +"Geo 5xx",boiler,173,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,128,2 +"Geo 5xx",boiler,173,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,130,2 +"Geo 5xx",boiler,173,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,132,2 +"Geo 5xx",boiler,173,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,134,2 "Geo 5xx",boiler,173,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2 -"Geo 5xx",boiler,173,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2 -"Geo 5xx",boiler,173,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2 -"Geo 5xx",boiler,173,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2 +"Geo 5xx",boiler,173,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,136,2 +"Geo 5xx",boiler,173,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,138,2 +"Geo 5xx",boiler,173,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,140,2 "Geo 5xx",boiler,173,dhw.nrgsupp,total energy warm supplied,uint24,kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2 -"Geo 5xx",boiler,173,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2 -"Geo 5xx",boiler,173,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2 -"Geo 5xx",boiler,173,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1 -"Geo 5xx",boiler,173,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1 -"Geo 5xx",boiler,173,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1 -"Geo 5xx",boiler,173,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,146,1 -"Geo 5xx",boiler,173,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,147,1 -"Geo 5xx",boiler,173,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,148,1 -"Geo 5xx",boiler,173,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,149,1 -"Geo 5xx",boiler,173,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1 -"Geo 5xx",boiler,173,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,151,1 -"Geo 5xx",boiler,173,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1 -"Geo 5xx",boiler,173,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1 -"Geo 5xx",boiler,173,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1 -"Geo 5xx",boiler,173,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1 -"Geo 5xx",boiler,173,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1 -"Geo 5xx",boiler,173,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1 -"Geo 5xx",boiler,173,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1 -"Geo 5xx",boiler,173,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1 -"Geo 5xx",boiler,173,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1 -"Geo 5xx",boiler,173,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1 -"Geo 5xx",boiler,173,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1 -"Geo 5xx",boiler,173,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1 -"Geo 5xx",boiler,173,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1 -"Geo 5xx",boiler,173,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1 -"Geo 5xx",boiler,173,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1 -"Geo 5xx",boiler,173,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1 -"Geo 5xx",boiler,173,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1 -"Geo 5xx",boiler,173,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1 -"Geo 5xx",boiler,173,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1 -"Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1 -"Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1 -"Geo 5xx",boiler,173,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1 -"Geo 5xx",boiler,173,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,174,1 -"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,175,1 -"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,176,8 -"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,184,1 -"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,185,8 -"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,193,1 -"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,194,8 -"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,202,1 -"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,203,8 -"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,211,1 -"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,212,1 +"Geo 5xx",boiler,173,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,142,2 +"Geo 5xx",boiler,173,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,144,2 +"Geo 5xx",boiler,173,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,146,1 +"Geo 5xx",boiler,173,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,147,1 +"Geo 5xx",boiler,173,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,148,1 +"Geo 5xx",boiler,173,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,149,1 +"Geo 5xx",boiler,173,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,150,1 +"Geo 5xx",boiler,173,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,151,1 +"Geo 5xx",boiler,173,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,152,1 +"Geo 5xx",boiler,173,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,153,1 +"Geo 5xx",boiler,173,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,154,1 +"Geo 5xx",boiler,173,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,155,1 +"Geo 5xx",boiler,173,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,156,1 +"Geo 5xx",boiler,173,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,157,1 +"Geo 5xx",boiler,173,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,158,1 +"Geo 5xx",boiler,173,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,159,1 +"Geo 5xx",boiler,173,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,160,1 +"Geo 5xx",boiler,173,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,161,1 +"Geo 5xx",boiler,173,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,162,1 +"Geo 5xx",boiler,173,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,163,1 +"Geo 5xx",boiler,173,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,164,1 +"Geo 5xx",boiler,173,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,165,1 +"Geo 5xx",boiler,173,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,166,1 +"Geo 5xx",boiler,173,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,167,1 +"Geo 5xx",boiler,173,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,168,1 +"Geo 5xx",boiler,173,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,169,1 +"Geo 5xx",boiler,173,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,170,1 +"Geo 5xx",boiler,173,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,171,1 +"Geo 5xx",boiler,173,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,172,1 +"Geo 5xx",boiler,173,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,173,1 +"Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,174,1 +"Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,175,1 +"Geo 5xx",boiler,173,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,176,1 +"Geo 5xx",boiler,173,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,5,0,1,177,1 +"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,178,1 +"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,179,8 +"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,187,1 +"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,188,8 +"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,196,1 +"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,197,8 +"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,205,1 +"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,206,8 +"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,214,1 +"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,215,1 "Geo 5xx",boiler,173,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1 -"Geo 5xx",boiler,173,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,213,1 -"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,214,1 -"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,215,1 -"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,216,1 -"Geo 5xx",boiler,173,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,217,1 -"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,218,1 -"Geo 5xx",boiler,173,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,219,1 -"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,220,1 -"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,221,1 -"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,222,1 -"Geo 5xx",boiler,173,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,223,1 -"Geo 5xx",boiler,173,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,224,1 -"Geo 5xx",boiler,173,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,225,1 -"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,226,1 -"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,227,1 -"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,228,1 -"Geo 5xx",boiler,173,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,229,1 -"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,230,1 -"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,231,1 -"Geo 5xx",boiler,173,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,232,1 -"Geo 5xx",boiler,173,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,233,1 -"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,234,1 -"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,235,1 -"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,236,1 -"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,237,1 -"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,238,1 -"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,239,1 -"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,240,1 -"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,241,1 -"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,242,1 -"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,243,1 -"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,244,1 -"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,245,1 -"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,246,1 -"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,247,1 -"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,248,1 -"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,249,1 +"Geo 5xx",boiler,173,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,216,1 +"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,217,1 +"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,218,1 +"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,219,1 +"Geo 5xx",boiler,173,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,220,1 +"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,221,1 +"Geo 5xx",boiler,173,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,222,1 +"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,223,1 +"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,224,1 +"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,225,1 +"Geo 5xx",boiler,173,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,226,1 +"Geo 5xx",boiler,173,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,227,1 +"Geo 5xx",boiler,173,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,228,1 +"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,229,1 +"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,230,1 +"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,231,1 +"Geo 5xx",boiler,173,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,232,1 +"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,233,1 +"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,234,1 +"Geo 5xx",boiler,173,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,235,1 +"Geo 5xx",boiler,173,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,236,1 +"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,237,1 +"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,238,1 +"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,239,1 +"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,240,1 +"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,241,1 +"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,242,1 +"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,243,1 +"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,244,1 +"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,245,1 +"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,246,1 +"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,247,1 +"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,248,1 +"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,249,1 +"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,250,1 +"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,251,1 +"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,252,1 "Geo 5xx",boiler,173,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1 "Geo 5xx",boiler,173,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1 "Geo 5xx",boiler,173,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1 @@ -2964,7 +3033,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -2978,27 +3047,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3029,11 +3098,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3076,11 +3148,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Logamax U122, Cerapur",boiler,203,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Logamax U122, Cerapur",boiler,203,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Logamax U122, Cerapur",boiler,203,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Logamax U122, Cerapur",boiler,203,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Logamax U122, Cerapur",boiler,203,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -3094,27 +3166,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax U122, Cerapur",boiler,203,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax U122, Cerapur",boiler,203,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax U122, Cerapur",boiler,203,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax U122, Cerapur",boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Logamax U122, Cerapur",boiler,203,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Logamax U122, Cerapur",boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Logamax U122, Cerapur",boiler,203,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax U122, Cerapur",boiler,203,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax U122, Cerapur",boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3145,11 +3217,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Logamax U122, Cerapur",boiler,203,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Logamax U122, Cerapur",boiler,203,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Logamax U122, Cerapur",boiler,203,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Logamax U122, Cerapur",boiler,203,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Logamax U122, Cerapur",boiler,203,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax U122, Cerapur",boiler,203,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax U122, Cerapur",boiler,203,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3192,11 +3267,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Ecomline Excellent",boiler,206,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Ecomline Excellent",boiler,206,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Ecomline Excellent",boiler,206,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Ecomline Excellent",boiler,206,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Ecomline Excellent",boiler,206,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -3210,27 +3285,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Ecomline Excellent",boiler,206,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Ecomline Excellent",boiler,206,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Ecomline Excellent",boiler,206,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Ecomline Excellent",boiler,206,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Ecomline Excellent",boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Ecomline Excellent",boiler,206,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Ecomline Excellent",boiler,206,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Ecomline Excellent",boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Ecomline Excellent",boiler,206,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Ecomline Excellent",boiler,206,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Ecomline Excellent",boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3261,11 +3336,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Ecomline Excellent",boiler,206,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Ecomline Excellent",boiler,206,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Ecomline Excellent",boiler,206,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Ecomline Excellent",boiler,206,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Ecomline Excellent",boiler,206,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3308,11 +3386,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Ecomline Excellent",boiler,206,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -3326,27 +3404,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3377,11 +3455,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3424,11 +3505,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Cascade MC400",boiler,210,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Cascade MC400",boiler,210,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Cascade MC400",boiler,210,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Cascade MC400",boiler,210,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Cascade MC400",boiler,210,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -3442,27 +3523,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Cascade MC400",boiler,210,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Cascade MC400",boiler,210,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Cascade MC400",boiler,210,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Cascade MC400",boiler,210,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Cascade MC400",boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Cascade MC400",boiler,210,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Cascade MC400",boiler,210,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Cascade MC400",boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Cascade MC400",boiler,210,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Cascade MC400",boiler,210,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Cascade MC400",boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3493,11 +3574,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Cascade MC400",boiler,210,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Cascade MC400",boiler,210,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Cascade MC400",boiler,210,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Cascade MC400",boiler,210,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Cascade MC400",boiler,210,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3540,11 +3624,11 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Cascade MC400",boiler,210,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"EasyControl Adapter",boiler,211,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"EasyControl Adapter",boiler,211,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "EasyControl Adapter",boiler,211,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "EasyControl Adapter",boiler,211,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "EasyControl Adapter",boiler,211,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -3558,27 +3642,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "EasyControl Adapter",boiler,211,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "EasyControl Adapter",boiler,211,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"EasyControl Adapter",boiler,211,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"EasyControl Adapter",boiler,211,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"EasyControl Adapter",boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"EasyControl Adapter",boiler,211,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"EasyControl Adapter",boiler,211,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"EasyControl Adapter",boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "EasyControl Adapter",boiler,211,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "EasyControl Adapter",boiler,211,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "EasyControl Adapter",boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3609,11 +3693,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "EasyControl Adapter",boiler,211,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "EasyControl Adapter",boiler,211,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"EasyControl Adapter",boiler,211,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"EasyControl Adapter",boiler,211,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"EasyControl Adapter",boiler,211,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3656,17 +3743,17 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16,C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,276,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,277,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16,C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,279,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,280,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,5,9,1,75,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=0),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,278,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=0),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,279,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,5,0,1,280,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=0),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,281,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=0),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,282,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,5,0,1,283,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -3710,11 +3797,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3757,7 +3847,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1 @@ -3771,27 +3861,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,250,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,251,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,252,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,253,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,254,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,255,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,256,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,253,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,254,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,255,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,256,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,257,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,258,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,259,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,260,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,261,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,262,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,263,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,264,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,265,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,266,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,267,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,268,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,269,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,270,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,271,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,272,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,273,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1 @@ -3822,11 +3912,14 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,5,0,1,84,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpkickday,pump kick day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.boiler_pump_kick_day,select.boiler_pumpkickday,5,0,1,85,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,5,0,1,86,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,100,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,274,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,276,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1 @@ -3869,9 +3962,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,278,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,88,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,90,2 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2 "Logamatic TC100, Moduline Easy",thermostat,202,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Logamatic TC100, Moduline Easy",thermostat,202,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 @@ -3918,57 +4011,58 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "UI800, BC400",thermostat,4,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "UI800, BC400",thermostat,4,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "UI800, BC400",thermostat,4,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1 -"UI800, BC400",thermostat,4,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"UI800, BC400",thermostat,4,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"UI800, BC400",thermostat,4,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"UI800, BC400",thermostat,4,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1 -"UI800, BC400",thermostat,4,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1 -"UI800, BC400",thermostat,4,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"UI800, BC400",thermostat,4,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"UI800, BC400",thermostat,4,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 -"UI800, BC400",thermostat,4,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"UI800, BC400",thermostat,4,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1 -"UI800, BC400",thermostat,4,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1 -"UI800, BC400",thermostat,4,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"UI800, BC400",thermostat,4,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1 -"UI800, BC400",thermostat,4,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1 -"UI800, BC400",thermostat,4,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"UI800, BC400",thermostat,4,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"UI800, BC400",thermostat,4,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"UI800, BC400",thermostat,4,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 -"UI800, BC400",thermostat,4,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"UI800, BC400",thermostat,4,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"UI800, BC400",thermostat,4,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 -"UI800, BC400",thermostat,4,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"UI800, BC400",thermostat,4,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"UI800, BC400",thermostat,4,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"UI800, BC400",thermostat,4,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"UI800, BC400",thermostat,4,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"UI800, BC400",thermostat,4,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 -"UI800, BC400",thermostat,4,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 -"UI800, BC400",thermostat,4,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 -"UI800, BC400",thermostat,4,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 -"UI800, BC400",thermostat,4,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 -"UI800, BC400",thermostat,4,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 -"UI800, BC400",thermostat,4,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"UI800, BC400",thermostat,4,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"UI800, BC400",thermostat,4,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 -"UI800, BC400",thermostat,4,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 -"UI800, BC400",thermostat,4,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 -"UI800, BC400",thermostat,4,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 -"UI800, BC400",thermostat,4,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 -"UI800, BC400",thermostat,4,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 -"UI800, BC400",thermostat,4,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 -"UI800, BC400",thermostat,4,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 -"UI800, BC400",thermostat,4,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 -"UI800, BC400",thermostat,4,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 -"UI800, BC400",thermostat,4,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 -"UI800, BC400",thermostat,4,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 -"UI800, BC400",thermostat,4,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 -"UI800, BC400",thermostat,4,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 -"UI800, BC400",thermostat,4,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 -"UI800, BC400",thermostat,4,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 -"UI800, BC400",thermostat,4,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 +"UI800, BC400",thermostat,4,hc1.baseflowtemp,base flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_base_flow_temperature,number.thermostat_hc1_baseflowtemp,6,1,1,11,1 +"UI800, BC400",thermostat,4,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"UI800, BC400",thermostat,4,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"UI800, BC400",thermostat,4,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"UI800, BC400",thermostat,4,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,15,1 +"UI800, BC400",thermostat,4,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,16,1 +"UI800, BC400",thermostat,4,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"UI800, BC400",thermostat,4,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"UI800, BC400",thermostat,4,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 +"UI800, BC400",thermostat,4,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"UI800, BC400",thermostat,4,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,21,1 +"UI800, BC400",thermostat,4,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,22,1 +"UI800, BC400",thermostat,4,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"UI800, BC400",thermostat,4,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,24,1 +"UI800, BC400",thermostat,4,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,25,1 +"UI800, BC400",thermostat,4,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"UI800, BC400",thermostat,4,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"UI800, BC400",thermostat,4,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"UI800, BC400",thermostat,4,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,29,1 +"UI800, BC400",thermostat,4,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,30,1 +"UI800, BC400",thermostat,4,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,31,1 +"UI800, BC400",thermostat,4,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,32,1 +"UI800, BC400",thermostat,4,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"UI800, BC400",thermostat,4,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"UI800, BC400",thermostat,4,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"UI800, BC400",thermostat,4,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"UI800, BC400",thermostat,4,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"UI800, BC400",thermostat,4,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,38,1 +"UI800, BC400",thermostat,4,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,39,1 +"UI800, BC400",thermostat,4,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,40,1 +"UI800, BC400",thermostat,4,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,41,1 +"UI800, BC400",thermostat,4,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,42,1 +"UI800, BC400",thermostat,4,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,43,1 +"UI800, BC400",thermostat,4,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"UI800, BC400",thermostat,4,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"UI800, BC400",thermostat,4,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,46,1 +"UI800, BC400",thermostat,4,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,47,1 +"UI800, BC400",thermostat,4,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,48,1 +"UI800, BC400",thermostat,4,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,49,1 +"UI800, BC400",thermostat,4,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,50,1 +"UI800, BC400",thermostat,4,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,51,1 +"UI800, BC400",thermostat,4,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,52,1 +"UI800, BC400",thermostat,4,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,53,1 +"UI800, BC400",thermostat,4,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,54,1 +"UI800, BC400",thermostat,4,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,55,1 +"UI800, BC400",thermostat,4,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,56,1 +"UI800, BC400",thermostat,4,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,57,1 +"UI800, BC400",thermostat,4,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,58,1 +"UI800, BC400",thermostat,4,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,59,1 +"UI800, BC400",thermostat,4,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,60,1 +"UI800, BC400",thermostat,4,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,61,1 +"UI800, BC400",thermostat,4,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,62,1 "UI800, BC400",thermostat,4,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "UI800, BC400",thermostat,4,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "UI800, BC400",thermostat,4,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -3988,8 +4082,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CR11",thermostat,10,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "CR11",thermostat,10,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "CR11",thermostat,10,hc1.mode,operating mode,enum [off\|manual] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"CR11",thermostat,10,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 -"CR11",thermostat,10,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 +"CR11",thermostat,10,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 +"CR11",thermostat,10,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 "RC10",thermostat,65,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RC10",thermostat,65,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "RC10",thermostat,65,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -3999,15 +4093,15 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC10",thermostat,65,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC10",thermostat,65,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC10",thermostat,65,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC10",thermostat,65,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"RC10",thermostat,65,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"RC10",thermostat,65,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC10",thermostat,65,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"RC10",thermostat,65,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC10",thermostat,65,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC10",thermostat,65,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 +"RC10",thermostat,65,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"RC10",thermostat,65,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"RC10",thermostat,65,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"RC10",thermostat,65,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"RC10",thermostat,65,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"RC10",thermostat,65,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"RC10",thermostat,65,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 "RC10",thermostat,65,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"RC10",thermostat,65,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 +"RC10",thermostat,65,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 "RC30",thermostat,67,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RC30",thermostat,67,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "RC30",thermostat,67,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4026,40 +4120,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC30",thermostat,67,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC30",thermostat,67,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC30",thermostat,67,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC30",thermostat,67,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"RC30",thermostat,67,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"RC30",thermostat,67,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"RC30",thermostat,67,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 "RC30",thermostat,67,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "RC30",thermostat,67,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"RC30",thermostat,67,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 -"RC30",thermostat,67,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"RC30",thermostat,67,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,65,1 +"RC30",thermostat,67,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "RC30",thermostat,67,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"RC30",thermostat,67,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"RC30",thermostat,67,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 -"RC30",thermostat,67,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"RC30",thermostat,67,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"RC30",thermostat,67,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"RC30",thermostat,67,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"RC30",thermostat,67,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC30",thermostat,67,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 -"RC30",thermostat,67,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"RC30",thermostat,67,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"RC30",thermostat,67,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"RC30",thermostat,67,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"RC30",thermostat,67,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 -"RC30",thermostat,67,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 -"RC30",thermostat,67,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC30",thermostat,67,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 -"RC30",thermostat,67,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 -"RC30",thermostat,67,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC30",thermostat,67,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"RC30",thermostat,67,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"RC30",thermostat,67,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 -"RC30",thermostat,67,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 -"RC30",thermostat,67,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"RC30",thermostat,67,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"RC30",thermostat,67,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"RC30",thermostat,67,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 -"RC30",thermostat,67,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 +"RC30",thermostat,67,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"RC30",thermostat,67,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,66,1 +"RC30",thermostat,67,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"RC30",thermostat,67,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"RC30",thermostat,67,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"RC30",thermostat,67,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"RC30",thermostat,67,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"RC30",thermostat,67,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,67,1 +"RC30",thermostat,67,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"RC30",thermostat,67,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"RC30",thermostat,67,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"RC30",thermostat,67,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"RC30",thermostat,67,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,68,13 +"RC30",thermostat,67,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,81,13 +"RC30",thermostat,67,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"RC30",thermostat,67,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,94,1 +"RC30",thermostat,67,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,95,1 +"RC30",thermostat,67,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"RC30",thermostat,67,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"RC30",thermostat,67,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"RC30",thermostat,67,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,96,1 +"RC30",thermostat,67,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,97,1 +"RC30",thermostat,67,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"RC30",thermostat,67,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"RC30",thermostat,67,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"RC30",thermostat,67,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,98,8 +"RC30",thermostat,67,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,106,8 "RC30",thermostat,67,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC30",thermostat,67,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "RC30",thermostat,67,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4081,12 +4175,12 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC20, Moduline 300",thermostat,77,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC20, Moduline 300",thermostat,77,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC20, Moduline 300",thermostat,77,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1 -"RC20, Moduline 300",thermostat,77,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,113,1 -"RC20, Moduline 300",thermostat,77,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,114,1 -"RC20, Moduline 300",thermostat,77,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,115,1 -"RC20, Moduline 300",thermostat,77,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,116,1 -"RC20, Moduline 300",thermostat,77,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"RC20, Moduline 300",thermostat,77,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,117,8 +"RC20, Moduline 300",thermostat,77,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,114,1 +"RC20, Moduline 300",thermostat,77,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,115,1 +"RC20, Moduline 300",thermostat,77,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,116,1 +"RC20, Moduline 300",thermostat,77,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,117,1 +"RC20, Moduline 300",thermostat,77,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"RC20, Moduline 300",thermostat,77,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,118,8 "Moduline 400",thermostat,78,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Moduline 400",thermostat,78,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "Moduline 400",thermostat,78,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4104,26 +4198,26 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Moduline 400",thermostat,78,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "Moduline 400",thermostat,78,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "Moduline 400",thermostat,78,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"Moduline 400",thermostat,78,hc1.pause,pause time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 -"Moduline 400",thermostat,78,hc1.party,party time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 -"Moduline 400",thermostat,78,hc1.vacations1,vacation dates 1,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_1,sensor.thermostat_hc1_vacations1,6,1,1,125,11 -"Moduline 400",thermostat,78,hc1.vacations2,vacation dates 2,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_2,sensor.thermostat_hc1_vacations2,6,1,1,136,11 -"Moduline 400",thermostat,78,hc1.vacations3,vacation dates 3,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_3,sensor.thermostat_hc1_vacations3,6,1,1,147,11 -"Moduline 400",thermostat,78,hc1.vacations4,vacation dates 4,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_4,sensor.thermostat_hc1_vacations4,6,1,1,158,11 -"Moduline 400",thermostat,78,hc1.vacations5,vacation dates 5,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_5,sensor.thermostat_hc1_vacations5,6,1,1,169,11 -"Moduline 400",thermostat,78,hc1.vacations6,vacation dates 6,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_6,sensor.thermostat_hc1_vacations6,6,1,1,180,11 -"Moduline 400",thermostat,78,hc1.vacations7,vacation dates 7,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_7,sensor.thermostat_hc1_vacations7,6,1,1,191,11 -"Moduline 400",thermostat,78,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"Moduline 400",thermostat,78,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 -"Moduline 400",thermostat,78,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"Moduline 400",thermostat,78,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"Moduline 400",thermostat,78,hc1.holidaytemp,holiday temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 -"Moduline 400",thermostat,78,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"Moduline 400",thermostat,78,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,114,1 -"Moduline 400",thermostat,78,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,115,1 -"Moduline 400",thermostat,78,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,116,1 +"Moduline 400",thermostat,78,hc1.pause,pause time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,94,1 +"Moduline 400",thermostat,78,hc1.party,party time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,95,1 +"Moduline 400",thermostat,78,hc1.vacations1,vacation dates 1,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_1,sensor.thermostat_hc1_vacations1,6,1,1,126,11 +"Moduline 400",thermostat,78,hc1.vacations2,vacation dates 2,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_2,sensor.thermostat_hc1_vacations2,6,1,1,137,11 +"Moduline 400",thermostat,78,hc1.vacations3,vacation dates 3,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_3,sensor.thermostat_hc1_vacations3,6,1,1,148,11 +"Moduline 400",thermostat,78,hc1.vacations4,vacation dates 4,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_4,sensor.thermostat_hc1_vacations4,6,1,1,159,11 +"Moduline 400",thermostat,78,hc1.vacations5,vacation dates 5,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_5,sensor.thermostat_hc1_vacations5,6,1,1,170,11 +"Moduline 400",thermostat,78,hc1.vacations6,vacation dates 6,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_6,sensor.thermostat_hc1_vacations6,6,1,1,181,11 +"Moduline 400",thermostat,78,hc1.vacations7,vacation dates 7,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_7,sensor.thermostat_hc1_vacations7,6,1,1,192,11 +"Moduline 400",thermostat,78,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"Moduline 400",thermostat,78,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,98,8 +"Moduline 400",thermostat,78,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"Moduline 400",thermostat,78,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"Moduline 400",thermostat,78,hc1.holidaytemp,holiday temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,65,1 +"Moduline 400",thermostat,78,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"Moduline 400",thermostat,78,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,115,1 +"Moduline 400",thermostat,78,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,116,1 +"Moduline 400",thermostat,78,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,117,1 "Moduline 400",thermostat,78,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1 -"Moduline 400",thermostat,78,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,113,1 +"Moduline 400",thermostat,78,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,114,1 "Moduline 400",thermostat,78,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Moduline 400",thermostat,78,dhw.whenmodeoff,when thermostat mode off,boolean (>=0<=0), ,true,switch.thermostat_dhw_when_thermostat_mode_off,switch.thermostat_dhw_whenmodeoff,6,9,1,60,1 "Moduline 400",thermostat,78,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1 @@ -4138,10 +4232,10 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC10, Moduline 100",thermostat,79,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "RC10, Moduline 100",thermostat,79,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC10, Moduline 100",thermostat,79,hc1.mode,operating mode,enum [nofrost\|night\|day] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"RC10, Moduline 100",thermostat,79,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"RC10, Moduline 100",thermostat,79,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"RC10, Moduline 100",thermostat,79,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,202,1 -"RC10, Moduline 100",thermostat,79,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,203,1 +"RC10, Moduline 100",thermostat,79,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"RC10, Moduline 100",thermostat,79,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"RC10, Moduline 100",thermostat,79,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,203,1 +"RC10, Moduline 100",thermostat,79,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,204,1 "RC10, Moduline 100",thermostat,79,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Moduline 200",thermostat,80,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Moduline 200",thermostat,80,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 @@ -4152,10 +4246,10 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Moduline 200",thermostat,80,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "Moduline 200",thermostat,80,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "Moduline 200",thermostat,80,hc1.mode,operating mode,enum [nofrost\|night\|day] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"Moduline 200",thermostat,80,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"Moduline 200",thermostat,80,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"Moduline 200",thermostat,80,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,202,1 -"Moduline 200",thermostat,80,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,203,1 +"Moduline 200",thermostat,80,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"Moduline 200",thermostat,80,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"Moduline 200",thermostat,80,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,203,1 +"Moduline 200",thermostat,80,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,204,1 "Moduline 200",thermostat,80,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC35",thermostat,86,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RC35",thermostat,86,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 @@ -4172,40 +4266,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC35",thermostat,86,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC35",thermostat,86,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC35",thermostat,86,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC35",thermostat,86,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"RC35",thermostat,86,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"RC35",thermostat,86,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"RC35",thermostat,86,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 "RC35",thermostat,86,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "RC35",thermostat,86,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"RC35",thermostat,86,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 -"RC35",thermostat,86,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"RC35",thermostat,86,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,65,1 +"RC35",thermostat,86,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "RC35",thermostat,86,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"RC35",thermostat,86,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"RC35",thermostat,86,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 -"RC35",thermostat,86,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"RC35",thermostat,86,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"RC35",thermostat,86,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"RC35",thermostat,86,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"RC35",thermostat,86,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC35",thermostat,86,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 -"RC35",thermostat,86,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"RC35",thermostat,86,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"RC35",thermostat,86,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"RC35",thermostat,86,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"RC35",thermostat,86,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 -"RC35",thermostat,86,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 -"RC35",thermostat,86,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC35",thermostat,86,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 -"RC35",thermostat,86,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 -"RC35",thermostat,86,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC35",thermostat,86,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"RC35",thermostat,86,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"RC35",thermostat,86,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 -"RC35",thermostat,86,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 -"RC35",thermostat,86,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"RC35",thermostat,86,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"RC35",thermostat,86,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"RC35",thermostat,86,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 -"RC35",thermostat,86,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 +"RC35",thermostat,86,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"RC35",thermostat,86,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,66,1 +"RC35",thermostat,86,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"RC35",thermostat,86,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"RC35",thermostat,86,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"RC35",thermostat,86,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"RC35",thermostat,86,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"RC35",thermostat,86,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,67,1 +"RC35",thermostat,86,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"RC35",thermostat,86,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"RC35",thermostat,86,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"RC35",thermostat,86,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"RC35",thermostat,86,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,68,13 +"RC35",thermostat,86,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,81,13 +"RC35",thermostat,86,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"RC35",thermostat,86,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,94,1 +"RC35",thermostat,86,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,95,1 +"RC35",thermostat,86,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"RC35",thermostat,86,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"RC35",thermostat,86,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"RC35",thermostat,86,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,96,1 +"RC35",thermostat,86,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,97,1 +"RC35",thermostat,86,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"RC35",thermostat,86,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"RC35",thermostat,86,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"RC35",thermostat,86,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,98,8 +"RC35",thermostat,86,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,106,8 "RC35",thermostat,86,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC35",thermostat,86,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "RC35",thermostat,86,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4228,15 +4322,15 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC10, Moduline 100",thermostat,90,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC10, Moduline 100",thermostat,90,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC10, Moduline 100",thermostat,90,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC10, Moduline 100",thermostat,90,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"RC10, Moduline 100",thermostat,90,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"RC10, Moduline 100",thermostat,90,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC10, Moduline 100",thermostat,90,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"RC10, Moduline 100",thermostat,90,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC10, Moduline 100",thermostat,90,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC10, Moduline 100",thermostat,90,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 +"RC10, Moduline 100",thermostat,90,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"RC10, Moduline 100",thermostat,90,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"RC10, Moduline 100",thermostat,90,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"RC10, Moduline 100",thermostat,90,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"RC10, Moduline 100",thermostat,90,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"RC10, Moduline 100",thermostat,90,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"RC10, Moduline 100",thermostat,90,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 "RC10, Moduline 100",thermostat,90,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"RC10, Moduline 100",thermostat,90,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 +"RC10, Moduline 100",thermostat,90,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 "RC20RF",thermostat,93,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RC20RF",thermostat,93,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "RC20RF",thermostat,93,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4245,12 +4339,12 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC20RF",thermostat,93,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC20RF",thermostat,93,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC20RF",thermostat,93,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1 -"RC20RF",thermostat,93,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,113,1 -"RC20RF",thermostat,93,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,114,1 -"RC20RF",thermostat,93,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,115,1 -"RC20RF",thermostat,93,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,116,1 -"RC20RF",thermostat,93,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"RC20RF",thermostat,93,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,117,8 +"RC20RF",thermostat,93,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,114,1 +"RC20RF",thermostat,93,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,115,1 +"RC20RF",thermostat,93,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,116,1 +"RC20RF",thermostat,93,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,117,1 +"RC20RF",thermostat,93,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"RC20RF",thermostat,93,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,118,8 "RFM20 Remote",thermostat,94,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RFM20 Remote",thermostat,94,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "RFM20 Remote",thermostat,94,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4266,15 +4360,15 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC25",thermostat,151,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC25",thermostat,151,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "RC25",thermostat,151,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"RC25",thermostat,151,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"RC25",thermostat,151,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"RC25",thermostat,151,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC25",thermostat,151,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"RC25",thermostat,151,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC25",thermostat,151,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC25",thermostat,151,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 +"RC25",thermostat,151,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"RC25",thermostat,151,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"RC25",thermostat,151,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"RC25",thermostat,151,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"RC25",thermostat,151,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"RC25",thermostat,151,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"RC25",thermostat,151,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 "RC25",thermostat,151,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"RC25",thermostat,151,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 +"RC25",thermostat,151,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 "RC200, CW100, CR120, CR50",thermostat,157,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RC200, CW100, CR120, CR50",thermostat,157,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "RC200, CW100, CR120, CR50",thermostat,157,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4309,55 +4403,56 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC200, CW100, CR120, CR50",thermostat,157,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "RC200, CW100, CR120, CR50",thermostat,157,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.controlmode,control mode,enum [optimized\|simple\|n/a\|room\|power] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 -"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.baseflowtemp,base flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_base_flow_temperature,number.thermostat_hc1_baseflowtemp,6,1,1,11,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,15,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,16,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,21,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,22,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,24,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,25,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.controlmode,control mode,enum [optimized\|simple\|n/a\|room\|power] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,29,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,30,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,31,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,32,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,38,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,39,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,40,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,41,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,42,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,43,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,47,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,48,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,49,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,50,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,51,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,52,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,53,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,54,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,55,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,56,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,57,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,58,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,59,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,60,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,61,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,62,1 "RC200, CW100, CR120, CR50",thermostat,157,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC200, CW100, CR120, CR50",thermostat,157,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "RC200, CW100, CR120, CR50",thermostat,157,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4404,57 +4499,58 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 -"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.baseflowtemp,base flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_base_flow_temperature,number.thermostat_hc1_baseflowtemp,6,1,1,11,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,15,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,16,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,21,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,22,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,24,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,25,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,29,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,30,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,31,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,32,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,38,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,39,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,40,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,41,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,42,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,43,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,46,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,47,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,48,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,49,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,50,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,51,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,52,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,53,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,54,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,55,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,56,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,57,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,58,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,59,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,60,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,61,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,62,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.mode,operating mode,enum [off\|normal\|comfort\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4474,8 +4570,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1 "RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.mode,operating mode,enum [off\|manual] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 -"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 -"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 +"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 +"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 "Rego 2000/3000",thermostat,172,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Rego 2000/3000",thermostat,172,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "Rego 2000/3000",thermostat,172,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4510,57 +4606,58 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Rego 2000/3000",thermostat,172,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "Rego 2000/3000",thermostat,172,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "Rego 2000/3000",thermostat,172,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1 -"Rego 2000/3000",thermostat,172,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"Rego 2000/3000",thermostat,172,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"Rego 2000/3000",thermostat,172,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"Rego 2000/3000",thermostat,172,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1 -"Rego 2000/3000",thermostat,172,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1 -"Rego 2000/3000",thermostat,172,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"Rego 2000/3000",thermostat,172,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"Rego 2000/3000",thermostat,172,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 -"Rego 2000/3000",thermostat,172,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"Rego 2000/3000",thermostat,172,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1 -"Rego 2000/3000",thermostat,172,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1 -"Rego 2000/3000",thermostat,172,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"Rego 2000/3000",thermostat,172,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1 -"Rego 2000/3000",thermostat,172,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1 -"Rego 2000/3000",thermostat,172,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"Rego 2000/3000",thermostat,172,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"Rego 2000/3000",thermostat,172,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"Rego 2000/3000",thermostat,172,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 -"Rego 2000/3000",thermostat,172,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"Rego 2000/3000",thermostat,172,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"Rego 2000/3000",thermostat,172,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 -"Rego 2000/3000",thermostat,172,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"Rego 2000/3000",thermostat,172,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"Rego 2000/3000",thermostat,172,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"Rego 2000/3000",thermostat,172,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"Rego 2000/3000",thermostat,172,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"Rego 2000/3000",thermostat,172,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 -"Rego 2000/3000",thermostat,172,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 -"Rego 2000/3000",thermostat,172,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 -"Rego 2000/3000",thermostat,172,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 -"Rego 2000/3000",thermostat,172,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 -"Rego 2000/3000",thermostat,172,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 -"Rego 2000/3000",thermostat,172,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"Rego 2000/3000",thermostat,172,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"Rego 2000/3000",thermostat,172,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 -"Rego 2000/3000",thermostat,172,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 -"Rego 2000/3000",thermostat,172,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 -"Rego 2000/3000",thermostat,172,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 -"Rego 2000/3000",thermostat,172,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 -"Rego 2000/3000",thermostat,172,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 -"Rego 2000/3000",thermostat,172,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 -"Rego 2000/3000",thermostat,172,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 -"Rego 2000/3000",thermostat,172,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 -"Rego 2000/3000",thermostat,172,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 -"Rego 2000/3000",thermostat,172,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 -"Rego 2000/3000",thermostat,172,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 -"Rego 2000/3000",thermostat,172,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 -"Rego 2000/3000",thermostat,172,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 -"Rego 2000/3000",thermostat,172,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 -"Rego 2000/3000",thermostat,172,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 -"Rego 2000/3000",thermostat,172,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 +"Rego 2000/3000",thermostat,172,hc1.baseflowtemp,base flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_base_flow_temperature,number.thermostat_hc1_baseflowtemp,6,1,1,11,1 +"Rego 2000/3000",thermostat,172,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"Rego 2000/3000",thermostat,172,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"Rego 2000/3000",thermostat,172,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"Rego 2000/3000",thermostat,172,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,15,1 +"Rego 2000/3000",thermostat,172,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,16,1 +"Rego 2000/3000",thermostat,172,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"Rego 2000/3000",thermostat,172,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"Rego 2000/3000",thermostat,172,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 +"Rego 2000/3000",thermostat,172,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"Rego 2000/3000",thermostat,172,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,21,1 +"Rego 2000/3000",thermostat,172,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,22,1 +"Rego 2000/3000",thermostat,172,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"Rego 2000/3000",thermostat,172,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,24,1 +"Rego 2000/3000",thermostat,172,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,25,1 +"Rego 2000/3000",thermostat,172,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"Rego 2000/3000",thermostat,172,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"Rego 2000/3000",thermostat,172,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"Rego 2000/3000",thermostat,172,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,29,1 +"Rego 2000/3000",thermostat,172,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,30,1 +"Rego 2000/3000",thermostat,172,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,31,1 +"Rego 2000/3000",thermostat,172,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,32,1 +"Rego 2000/3000",thermostat,172,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"Rego 2000/3000",thermostat,172,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"Rego 2000/3000",thermostat,172,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"Rego 2000/3000",thermostat,172,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"Rego 2000/3000",thermostat,172,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"Rego 2000/3000",thermostat,172,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,38,1 +"Rego 2000/3000",thermostat,172,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,39,1 +"Rego 2000/3000",thermostat,172,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,40,1 +"Rego 2000/3000",thermostat,172,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,41,1 +"Rego 2000/3000",thermostat,172,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,42,1 +"Rego 2000/3000",thermostat,172,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,43,1 +"Rego 2000/3000",thermostat,172,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"Rego 2000/3000",thermostat,172,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"Rego 2000/3000",thermostat,172,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,46,1 +"Rego 2000/3000",thermostat,172,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,47,1 +"Rego 2000/3000",thermostat,172,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,48,1 +"Rego 2000/3000",thermostat,172,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,49,1 +"Rego 2000/3000",thermostat,172,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,50,1 +"Rego 2000/3000",thermostat,172,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,51,1 +"Rego 2000/3000",thermostat,172,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,52,1 +"Rego 2000/3000",thermostat,172,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,53,1 +"Rego 2000/3000",thermostat,172,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,54,1 +"Rego 2000/3000",thermostat,172,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,55,1 +"Rego 2000/3000",thermostat,172,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,56,1 +"Rego 2000/3000",thermostat,172,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,57,1 +"Rego 2000/3000",thermostat,172,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,58,1 +"Rego 2000/3000",thermostat,172,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,59,1 +"Rego 2000/3000",thermostat,172,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,60,1 +"Rego 2000/3000",thermostat,172,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,61,1 +"Rego 2000/3000",thermostat,172,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,62,1 "Rego 2000/3000",thermostat,172,dhw.mode,operating mode,enum [normal\|comfort\|eco+] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Rego 2000/3000",thermostat,172,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "Rego 2000/3000",thermostat,172,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4582,7 +4679,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Comfort RF",thermostat,215,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "Comfort RF",thermostat,215,hc1.mode,operating mode,enum [auto\|off], ,false,sensor.thermostat_hc1_operating_mode,sensor.thermostat_hc1_mode,6,1,1,3,1 "Comfort RF",thermostat,215,hc1.modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"Comfort RF",thermostat,215,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"Comfort RF",thermostat,215,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "CRF200S",thermostat,216,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "CRF200S",thermostat,216,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "CRF200S",thermostat,216,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4591,7 +4688,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CRF200S",thermostat,216,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "CRF200S",thermostat,216,hc1.mode,operating mode,enum [auto\|off], ,false,sensor.thermostat_hc1_operating_mode,sensor.thermostat_hc1_mode,6,1,1,3,1 "CRF200S",thermostat,216,hc1.modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"CRF200S",thermostat,216,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"CRF200S",thermostat,216,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "Comfort+2RF",thermostat,246,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Comfort+2RF",thermostat,246,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "Comfort+2RF",thermostat,246,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4600,7 +4697,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Comfort+2RF",thermostat,246,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "Comfort+2RF",thermostat,246,hc1.mode,operating mode,enum [auto\|off], ,false,sensor.thermostat_hc1_operating_mode,sensor.thermostat_hc1_mode,6,1,1,3,1 "Comfort+2RF",thermostat,246,hc1.modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"Comfort+2RF",thermostat,246,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"Comfort+2RF",thermostat,246,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "Rego 3000, UI800, Logamatic BC400",thermostat,253,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "Rego 3000, UI800, Logamatic BC400",thermostat,253,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4634,57 +4731,58 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,30,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,31,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,37,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,38,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,39,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,40,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,41,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,42,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,45,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,46,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,47,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,48,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,49,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,50,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,51,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,52,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,53,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,54,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,55,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,56,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,57,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,58,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,59,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,60,1 -"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,61,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.baseflowtemp,base flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_base_flow_temperature,number.thermostat_hc1_baseflowtemp,6,1,1,11,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,15,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,16,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,21,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,22,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,24,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,25,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,29,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,30,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comfoffset,comfort point offset,uint8 (>=0<=10),C,true,number.thermostat_hc1_comfort_point_offset,number.thermostat_hc1_comfoffset,6,1,1,31,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comftemp,comfort point temperature,int8 (>=-5<=15),C,true,number.thermostat_hc1_comfort_point_temperature,number.thermostat_hc1_comftemp,6,1,1,32,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,38,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,39,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,40,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,41,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,42,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,43,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,46,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,47,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,48,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,49,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,50,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,51,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,52,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,53,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,54,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,55,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,56,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,57,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,58,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,59,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,60,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,61,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,62,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1 "Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1 @@ -4707,15 +4805,15 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES72, RC20",thermostat,66,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES72, RC20",thermostat,66,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES72, RC20",thermostat,66,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES72, RC20",thermostat,66,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"ES72, RC20",thermostat,66,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"ES72, RC20",thermostat,66,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"ES72, RC20",thermostat,66,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"ES72, RC20",thermostat,66,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"ES72, RC20",thermostat,66,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"ES72, RC20",thermostat,66,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 +"ES72, RC20",thermostat,66,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"ES72, RC20",thermostat,66,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"ES72, RC20",thermostat,66,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"ES72, RC20",thermostat,66,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"ES72, RC20",thermostat,66,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"ES72, RC20",thermostat,66,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"ES72, RC20",thermostat,66,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 "ES72, RC20",thermostat,66,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"ES72, RC20",thermostat,66,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 +"ES72, RC20",thermostat,66,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 "ES73",thermostat,76,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "ES73",thermostat,76,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "ES73",thermostat,76,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4734,40 +4832,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES73",thermostat,76,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES73",thermostat,76,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES73",thermostat,76,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES73",thermostat,76,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"ES73",thermostat,76,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"ES73",thermostat,76,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"ES73",thermostat,76,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 "ES73",thermostat,76,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "ES73",thermostat,76,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"ES73",thermostat,76,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 -"ES73",thermostat,76,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"ES73",thermostat,76,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,65,1 +"ES73",thermostat,76,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "ES73",thermostat,76,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"ES73",thermostat,76,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"ES73",thermostat,76,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 -"ES73",thermostat,76,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"ES73",thermostat,76,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"ES73",thermostat,76,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"ES73",thermostat,76,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"ES73",thermostat,76,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"ES73",thermostat,76,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 -"ES73",thermostat,76,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"ES73",thermostat,76,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"ES73",thermostat,76,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"ES73",thermostat,76,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"ES73",thermostat,76,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 -"ES73",thermostat,76,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 -"ES73",thermostat,76,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"ES73",thermostat,76,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 -"ES73",thermostat,76,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 -"ES73",thermostat,76,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"ES73",thermostat,76,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"ES73",thermostat,76,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"ES73",thermostat,76,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 -"ES73",thermostat,76,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 -"ES73",thermostat,76,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"ES73",thermostat,76,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"ES73",thermostat,76,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"ES73",thermostat,76,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 -"ES73",thermostat,76,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 +"ES73",thermostat,76,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"ES73",thermostat,76,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,66,1 +"ES73",thermostat,76,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"ES73",thermostat,76,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"ES73",thermostat,76,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"ES73",thermostat,76,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"ES73",thermostat,76,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"ES73",thermostat,76,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,67,1 +"ES73",thermostat,76,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"ES73",thermostat,76,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"ES73",thermostat,76,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"ES73",thermostat,76,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"ES73",thermostat,76,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,68,13 +"ES73",thermostat,76,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,81,13 +"ES73",thermostat,76,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"ES73",thermostat,76,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,94,1 +"ES73",thermostat,76,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,95,1 +"ES73",thermostat,76,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"ES73",thermostat,76,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"ES73",thermostat,76,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"ES73",thermostat,76,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,96,1 +"ES73",thermostat,76,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,97,1 +"ES73",thermostat,76,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"ES73",thermostat,76,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"ES73",thermostat,76,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"ES73",thermostat,76,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,98,8 +"ES73",thermostat,76,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,106,8 "ES73",thermostat,76,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "ES73",thermostat,76,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "ES73",thermostat,76,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4790,15 +4888,15 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES72, RC20",thermostat,113,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES72, RC20",thermostat,113,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES72, RC20",thermostat,113,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES72, RC20",thermostat,113,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"ES72, RC20",thermostat,113,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 -"ES72, RC20",thermostat,113,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"ES72, RC20",thermostat,113,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"ES72, RC20",thermostat,113,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"ES72, RC20",thermostat,113,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"ES72, RC20",thermostat,113,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 +"ES72, RC20",thermostat,113,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"ES72, RC20",thermostat,113,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 +"ES72, RC20",thermostat,113,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"ES72, RC20",thermostat,113,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"ES72, RC20",thermostat,113,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"ES72, RC20",thermostat,113,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"ES72, RC20",thermostat,113,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 "ES72, RC20",thermostat,113,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"ES72, RC20",thermostat,113,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 +"ES72, RC20",thermostat,113,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 "ES79",thermostat,156,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "ES79",thermostat,156,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "ES79",thermostat,156,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 @@ -4814,40 +4912,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "ES79",thermostat,156,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "ES79",thermostat,156,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "ES79",thermostat,156,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"ES79",thermostat,156,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,62,1 -"ES79",thermostat,156,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,63,1 +"ES79",thermostat,156,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,63,1 +"ES79",thermostat,156,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,64,1 "ES79",thermostat,156,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 "ES79",thermostat,156,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1 -"ES79",thermostat,156,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,64,1 -"ES79",thermostat,156,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"ES79",thermostat,156,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,65,1 +"ES79",thermostat,156,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "ES79",thermostat,156,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1 -"ES79",thermostat,156,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1 -"ES79",thermostat,156,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,65,1 -"ES79",thermostat,156,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1 -"ES79",thermostat,156,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1 -"ES79",thermostat,156,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1 -"ES79",thermostat,156,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"ES79",thermostat,156,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 -"ES79",thermostat,156,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,66,1 -"ES79",thermostat,156,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"ES79",thermostat,156,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,33,1 -"ES79",thermostat,156,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 -"ES79",thermostat,156,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"ES79",thermostat,156,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,67,13 -"ES79",thermostat,156,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,80,13 -"ES79",thermostat,156,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"ES79",thermostat,156,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,93,1 -"ES79",thermostat,156,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,94,1 -"ES79",thermostat,156,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1 -"ES79",thermostat,156,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,34,1 -"ES79",thermostat,156,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,35,1 -"ES79",thermostat,156,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,95,1 -"ES79",thermostat,156,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,96,1 -"ES79",thermostat,156,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"ES79",thermostat,156,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,36,1 -"ES79",thermostat,156,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"ES79",thermostat,156,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,97,8 -"ES79",thermostat,156,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,105,8 +"ES79",thermostat,156,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,23,1 +"ES79",thermostat,156,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,66,1 +"ES79",thermostat,156,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,18,1 +"ES79",thermostat,156,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,17,1 +"ES79",thermostat,156,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,14,1 +"ES79",thermostat,156,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"ES79",thermostat,156,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 +"ES79",thermostat,156,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,67,1 +"ES79",thermostat,156,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"ES79",thermostat,156,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,34,1 +"ES79",thermostat,156,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 +"ES79",thermostat,156,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"ES79",thermostat,156,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,68,13 +"ES79",thermostat,156,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,81,13 +"ES79",thermostat,156,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"ES79",thermostat,156,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,94,1 +"ES79",thermostat,156,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,95,1 +"ES79",thermostat,156,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,28,1 +"ES79",thermostat,156,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,35,1 +"ES79",thermostat,156,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,36,1 +"ES79",thermostat,156,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,96,1 +"ES79",thermostat,156,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,97,1 +"ES79",thermostat,156,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"ES79",thermostat,156,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,37,1 +"ES79",thermostat,156,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"ES79",thermostat,156,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,98,8 +"ES79",thermostat,156,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,106,8 "ES79",thermostat,156,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1 "ES79",thermostat,156,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1 "ES79",thermostat,156,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1 @@ -4866,6 +4964,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW100",thermostat,105,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 "FW100",thermostat,105,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1 "FW100",thermostat,105,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1 +"FW100",thermostat,105,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FW100",thermostat,105,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FW100",thermostat,105,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FW100",thermostat,105,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FW100",thermostat,105,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -4878,31 +4978,33 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW100",thermostat,105,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW100",thermostat,105,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW100",thermostat,105,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW100",thermostat,105,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FW100",thermostat,105,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FW100",thermostat,105,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FW100",thermostat,105,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW100",thermostat,105,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FW100",thermostat,105,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW100",thermostat,105,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FW100",thermostat,105,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FW100",thermostat,105,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FW100",thermostat,105,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FW100",thermostat,105,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FW100",thermostat,105,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FW100",thermostat,105,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FW100",thermostat,105,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW100",thermostat,105,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FW100",thermostat,105,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FW100",thermostat,105,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FW100",thermostat,105,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FW100",thermostat,105,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FW100",thermostat,105,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FW100",thermostat,105,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FW100",thermostat,105,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FW100",thermostat,105,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FW100",thermostat,105,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FW100",thermostat,105,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FW100",thermostat,105,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FW100",thermostat,105,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FW100",thermostat,105,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FW100",thermostat,105,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FW100",thermostat,105,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FW100",thermostat,105,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FW100",thermostat,105,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FW100",thermostat,105,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FW100",thermostat,105,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FW100",thermostat,105,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FW100",thermostat,105,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FW200",thermostat,106,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FW200",thermostat,106,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FW200",thermostat,106,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 "FW200",thermostat,106,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1 "FW200",thermostat,106,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1 +"FW200",thermostat,106,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FW200",thermostat,106,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FW200",thermostat,106,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FW200",thermostat,106,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FW200",thermostat,106,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -4915,29 +5017,31 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW200",thermostat,106,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW200",thermostat,106,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW200",thermostat,106,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW200",thermostat,106,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FW200",thermostat,106,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FW200",thermostat,106,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FW200",thermostat,106,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW200",thermostat,106,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FW200",thermostat,106,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW200",thermostat,106,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FW200",thermostat,106,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FW200",thermostat,106,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FW200",thermostat,106,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FW200",thermostat,106,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FW200",thermostat,106,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FW200",thermostat,106,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FW200",thermostat,106,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW200",thermostat,106,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FW200",thermostat,106,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FW200",thermostat,106,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FW200",thermostat,106,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FW200",thermostat,106,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FW200",thermostat,106,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FW200",thermostat,106,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FW200",thermostat,106,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FW200",thermostat,106,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FW200",thermostat,106,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FW200",thermostat,106,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FW200",thermostat,106,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FW200",thermostat,106,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FW200",thermostat,106,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FW200",thermostat,106,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FW200",thermostat,106,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FW200",thermostat,106,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FW200",thermostat,106,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FW200",thermostat,106,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FW200",thermostat,106,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FW200",thermostat,106,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FW200",thermostat,106,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FR100",thermostat,107,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FR100",thermostat,107,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FR100",thermostat,107,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 +"FR100",thermostat,107,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FR100",thermostat,107,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FR100",thermostat,107,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FR100",thermostat,107,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FR100",thermostat,107,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -4950,29 +5054,31 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR100",thermostat,107,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR100",thermostat,107,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR100",thermostat,107,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR100",thermostat,107,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FR100",thermostat,107,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FR100",thermostat,107,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FR100",thermostat,107,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR100",thermostat,107,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FR100",thermostat,107,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR100",thermostat,107,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FR100",thermostat,107,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FR100",thermostat,107,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FR100",thermostat,107,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FR100",thermostat,107,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FR100",thermostat,107,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FR100",thermostat,107,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FR100",thermostat,107,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR100",thermostat,107,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FR100",thermostat,107,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FR100",thermostat,107,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FR100",thermostat,107,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FR100",thermostat,107,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FR100",thermostat,107,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FR100",thermostat,107,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FR100",thermostat,107,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FR100",thermostat,107,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FR100",thermostat,107,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FR100",thermostat,107,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FR100",thermostat,107,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FR100",thermostat,107,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FR100",thermostat,107,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FR100",thermostat,107,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FR100",thermostat,107,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FR100",thermostat,107,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FR100",thermostat,107,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FR100",thermostat,107,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FR100",thermostat,107,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FR100",thermostat,107,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FR100",thermostat,107,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FR110",thermostat,108,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FR110",thermostat,108,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FR110",thermostat,108,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 +"FR110",thermostat,108,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FR110",thermostat,108,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FR110",thermostat,108,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FR110",thermostat,108,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FR110",thermostat,108,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -4985,31 +5091,33 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR110",thermostat,108,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR110",thermostat,108,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR110",thermostat,108,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR110",thermostat,108,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FR110",thermostat,108,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FR110",thermostat,108,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FR110",thermostat,108,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR110",thermostat,108,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FR110",thermostat,108,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR110",thermostat,108,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FR110",thermostat,108,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FR110",thermostat,108,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FR110",thermostat,108,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FR110",thermostat,108,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FR110",thermostat,108,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FR110",thermostat,108,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FR110",thermostat,108,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR110",thermostat,108,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FR110",thermostat,108,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FR110",thermostat,108,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FR110",thermostat,108,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FR110",thermostat,108,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FR110",thermostat,108,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FR110",thermostat,108,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FR110",thermostat,108,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FR110",thermostat,108,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FR110",thermostat,108,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FR110",thermostat,108,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FR110",thermostat,108,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FR110",thermostat,108,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FR110",thermostat,108,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FR110",thermostat,108,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FR110",thermostat,108,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FR110",thermostat,108,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FR110",thermostat,108,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FR110",thermostat,108,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FR110",thermostat,108,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FR110",thermostat,108,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FR110",thermostat,108,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FB10",thermostat,109,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FB10",thermostat,109,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FB10",thermostat,109,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 "FB10",thermostat,109,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1 "FB10",thermostat,109,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1 +"FB10",thermostat,109,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FB10",thermostat,109,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FB10",thermostat,109,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FB10",thermostat,109,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FB10",thermostat,109,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -5022,31 +5130,33 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FB10",thermostat,109,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FB10",thermostat,109,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FB10",thermostat,109,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FB10",thermostat,109,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FB10",thermostat,109,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FB10",thermostat,109,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FB10",thermostat,109,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FB10",thermostat,109,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FB10",thermostat,109,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FB10",thermostat,109,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FB10",thermostat,109,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FB10",thermostat,109,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FB10",thermostat,109,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FB10",thermostat,109,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FB10",thermostat,109,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FB10",thermostat,109,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FB10",thermostat,109,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FB10",thermostat,109,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FB10",thermostat,109,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FB10",thermostat,109,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FB10",thermostat,109,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FB10",thermostat,109,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FB10",thermostat,109,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FB10",thermostat,109,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FB10",thermostat,109,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FB10",thermostat,109,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FB10",thermostat,109,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FB10",thermostat,109,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FB10",thermostat,109,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FB10",thermostat,109,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FB10",thermostat,109,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FB10",thermostat,109,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FB10",thermostat,109,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FB10",thermostat,109,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FB10",thermostat,109,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FB10",thermostat,109,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FB10",thermostat,109,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FB10",thermostat,109,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FB10",thermostat,109,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FB100",thermostat,110,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FB100",thermostat,110,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FB100",thermostat,110,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 "FB100",thermostat,110,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1 "FB100",thermostat,110,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1 +"FB100",thermostat,110,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FB100",thermostat,110,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FB100",thermostat,110,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FB100",thermostat,110,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FB100",thermostat,110,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -5059,29 +5169,31 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FB100",thermostat,110,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FB100",thermostat,110,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FB100",thermostat,110,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FB100",thermostat,110,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FB100",thermostat,110,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FB100",thermostat,110,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FB100",thermostat,110,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FB100",thermostat,110,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FB100",thermostat,110,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FB100",thermostat,110,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FB100",thermostat,110,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FB100",thermostat,110,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FB100",thermostat,110,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FB100",thermostat,110,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FB100",thermostat,110,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FB100",thermostat,110,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FB100",thermostat,110,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FB100",thermostat,110,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FB100",thermostat,110,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FB100",thermostat,110,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FB100",thermostat,110,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FB100",thermostat,110,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FB100",thermostat,110,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FB100",thermostat,110,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FB100",thermostat,110,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FB100",thermostat,110,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FB100",thermostat,110,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FB100",thermostat,110,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FB100",thermostat,110,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FB100",thermostat,110,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FB100",thermostat,110,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FB100",thermostat,110,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FB100",thermostat,110,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FB100",thermostat,110,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FB100",thermostat,110,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FB100",thermostat,110,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FB100",thermostat,110,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FB100",thermostat,110,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FB100",thermostat,110,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FR10",thermostat,111,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FR10",thermostat,111,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FR10",thermostat,111,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 +"FR10",thermostat,111,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FR10",thermostat,111,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FR10",thermostat,111,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FR10",thermostat,111,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FR10",thermostat,111,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -5094,31 +5206,33 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR10",thermostat,111,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR10",thermostat,111,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR10",thermostat,111,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR10",thermostat,111,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FR10",thermostat,111,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FR10",thermostat,111,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FR10",thermostat,111,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR10",thermostat,111,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FR10",thermostat,111,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR10",thermostat,111,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FR10",thermostat,111,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FR10",thermostat,111,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FR10",thermostat,111,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FR10",thermostat,111,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FR10",thermostat,111,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FR10",thermostat,111,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FR10",thermostat,111,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR10",thermostat,111,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FR10",thermostat,111,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FR10",thermostat,111,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FR10",thermostat,111,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FR10",thermostat,111,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FR10",thermostat,111,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FR10",thermostat,111,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FR10",thermostat,111,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FR10",thermostat,111,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FR10",thermostat,111,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FR10",thermostat,111,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FR10",thermostat,111,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FR10",thermostat,111,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FR10",thermostat,111,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FR10",thermostat,111,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FR10",thermostat,111,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FR10",thermostat,111,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FR10",thermostat,111,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FR10",thermostat,111,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FR10",thermostat,111,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FR10",thermostat,111,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FR10",thermostat,111,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FW500",thermostat,116,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FW500",thermostat,116,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FW500",thermostat,116,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 "FW500",thermostat,116,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1 "FW500",thermostat,116,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1 +"FW500",thermostat,116,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FW500",thermostat,116,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FW500",thermostat,116,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FW500",thermostat,116,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FW500",thermostat,116,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -5131,29 +5245,31 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW500",thermostat,116,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW500",thermostat,116,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW500",thermostat,116,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW500",thermostat,116,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FW500",thermostat,116,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FW500",thermostat,116,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FW500",thermostat,116,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW500",thermostat,116,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FW500",thermostat,116,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW500",thermostat,116,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FW500",thermostat,116,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FW500",thermostat,116,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FW500",thermostat,116,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FW500",thermostat,116,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FW500",thermostat,116,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FW500",thermostat,116,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FW500",thermostat,116,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW500",thermostat,116,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FW500",thermostat,116,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FW500",thermostat,116,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FW500",thermostat,116,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FW500",thermostat,116,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FW500",thermostat,116,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FW500",thermostat,116,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FW500",thermostat,116,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FW500",thermostat,116,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FW500",thermostat,116,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FW500",thermostat,116,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FW500",thermostat,116,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FW500",thermostat,116,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FW500",thermostat,116,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FW500",thermostat,116,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FW500",thermostat,116,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FW500",thermostat,116,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FW500",thermostat,116,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FW500",thermostat,116,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FW500",thermostat,116,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FW500",thermostat,116,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FW500",thermostat,116,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FR50",thermostat,147,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FR50",thermostat,147,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FR50",thermostat,147,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 +"FR50",thermostat,147,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FR50",thermostat,147,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FR50",thermostat,147,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FR50",thermostat,147,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FR50",thermostat,147,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -5166,29 +5282,31 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR50",thermostat,147,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR50",thermostat,147,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR50",thermostat,147,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR50",thermostat,147,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FR50",thermostat,147,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FR50",thermostat,147,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FR50",thermostat,147,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR50",thermostat,147,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FR50",thermostat,147,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR50",thermostat,147,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FR50",thermostat,147,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FR50",thermostat,147,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FR50",thermostat,147,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FR50",thermostat,147,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FR50",thermostat,147,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FR50",thermostat,147,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FR50",thermostat,147,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR50",thermostat,147,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FR50",thermostat,147,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FR50",thermostat,147,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FR50",thermostat,147,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FR50",thermostat,147,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FR50",thermostat,147,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FR50",thermostat,147,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FR50",thermostat,147,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FR50",thermostat,147,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FR50",thermostat,147,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FR50",thermostat,147,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FR50",thermostat,147,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FR50",thermostat,147,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FR50",thermostat,147,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FR50",thermostat,147,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FR50",thermostat,147,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FR50",thermostat,147,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FR50",thermostat,147,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FR50",thermostat,147,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FR50",thermostat,147,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FR50",thermostat,147,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FR50",thermostat,147,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FR120",thermostat,191,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FR120",thermostat,191,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FR120",thermostat,191,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 +"FR120",thermostat,191,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FR120",thermostat,191,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FR120",thermostat,191,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FR120",thermostat,191,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FR120",thermostat,191,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -5201,31 +5319,33 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FR120",thermostat,191,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FR120",thermostat,191,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FR120",thermostat,191,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FR120",thermostat,191,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FR120",thermostat,191,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FR120",thermostat,191,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FR120",thermostat,191,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FR120",thermostat,191,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FR120",thermostat,191,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FR120",thermostat,191,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FR120",thermostat,191,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FR120",thermostat,191,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FR120",thermostat,191,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FR120",thermostat,191,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FR120",thermostat,191,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FR120",thermostat,191,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FR120",thermostat,191,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FR120",thermostat,191,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FR120",thermostat,191,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FR120",thermostat,191,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FR120",thermostat,191,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FR120",thermostat,191,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FR120",thermostat,191,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FR120",thermostat,191,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FR120",thermostat,191,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FR120",thermostat,191,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FR120",thermostat,191,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FR120",thermostat,191,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FR120",thermostat,191,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FR120",thermostat,191,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FR120",thermostat,191,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FR120",thermostat,191,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FR120",thermostat,191,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FR120",thermostat,191,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FR120",thermostat,191,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FR120",thermostat,191,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FR120",thermostat,191,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FR120",thermostat,191,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FR120",thermostat,191,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "FW120",thermostat,192,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "FW120",thermostat,192,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 "FW120",thermostat,192,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13 "FW120",thermostat,192,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1 "FW120",thermostat,192,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1 +"FW120",thermostat,192,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,6,0,10,50,1 +"FW120",thermostat,192,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1 "FW120",thermostat,192,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1 "FW120",thermostat,192,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1 "FW120",thermostat,192,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1 @@ -5238,25 +5358,25 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "FW120",thermostat,192,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1 "FW120",thermostat,192,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1 "FW120",thermostat,192,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1 -"FW120",thermostat,192,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,204,1 +"FW120",thermostat,192,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,205,1 "FW120",thermostat,192,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1 -"FW120",thermostat,192,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1 -"FW120",thermostat,192,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,43,1 -"FW120",thermostat,192,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1 -"FW120",thermostat,192,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,44,1 -"FW120",thermostat,192,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1 +"FW120",thermostat,192,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,18,1 +"FW120",thermostat,192,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,44,1 +"FW120",thermostat,192,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,27,1 +"FW120",thermostat,192,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,45,1 +"FW120",thermostat,192,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,19,1 "FW120",thermostat,192,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1 -"FW120",thermostat,192,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,205,1 -"FW120",thermostat,192,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,65,1 -"FW120",thermostat,192,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,32,1 -"FW120",thermostat,192,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,206,1 -"FW120",thermostat,192,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1 -"FW120",thermostat,192,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1 +"FW120",thermostat,192,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,206,1 +"FW120",thermostat,192,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,66,1 +"FW120",thermostat,192,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,33,1 +"FW120",thermostat,192,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,207,1 +"FW120",thermostat,192,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,12,1 +"FW120",thermostat,192,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,13,1 "FW120",thermostat,192,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1 -"FW120",thermostat,192,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1 -"FW120",thermostat,192,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1 -"FW120",thermostat,192,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1 -"FW120",thermostat,192,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1 +"FW120",thermostat,192,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,14,1 +"FW120",thermostat,192,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,15,1 +"FW120",thermostat,192,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,20,1 +"FW120",thermostat,192,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,26,1 "FW120",thermostat,192,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1 "RT800, RC220",thermostat,3,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8 "RT800, RC220",thermostat,3,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25 diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 297405d42..8b0173331 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 0x27,UBASettingsWW,fetched 0x28,WeatherComp,fetched @@ -72,11 +72,12 @@ telegram_type_id,name,is_fetched 0xE6,UBAParametersPlus,fetched 0xE9,UBAMonitorWWPlus, 0xEA,UBAParameterWWPlus,fetched +0xEB,PumpKick,fetched 0x0101,ISM1Set,fetched 0x0103,ISM1StatusMessage,fetched 0x0104,ISM2StatusMessage, 0x010C,IPMStatusMessage, -0x011E,JunkersDisp,fetched +0x011E,IPMTempMessage, 0x012E,HPEnergy1, 0x013B,HPEnergy2, 0x0165,JunkersSet, @@ -111,8 +112,8 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,RC300Monitor, -0x02A6,RC300Monitor, +0x02A5,RC300Monitor,fetched +0x02A6,CRFMonitor, 0x02A7,RC300Monitor, 0x02A8,CRFMonitor, 0x02A9,RC300Monitor, @@ -197,7 +198,7 @@ telegram_type_id,name,is_fetched 0x04A2,HpInput,fetched 0x04A5,HPFan,fetched 0x04A7,HPPowerLimit,fetched -0x04AA,HPPower2,fetched +0x04AA,HPPower, 0x04AE,HPEnergy,fetched 0x04AF,HPMeters,fetched 0x055C,VentilationSet,fetched diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index 4e2a85f55..0d222517a 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -60,144 +60,147 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pc1Flow), 81, 1), // pc1flow REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pc1On), 82, 1), // pc1on REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pc1Rate), 83, 1), // pc1rate - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(manDefrost), 84, 1), // mandefrost - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgTotal), 85, 2), // nrgtotal - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat), 87, 2), // nrgheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgCool), 89, 2), // nrgcool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterTotal), 91, 2), // metertotal - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterComp), 93, 2), // metercomp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterEHeat), 95, 2), // metereheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterHeat), 97, 2), // meterheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterCool), 99, 2), // metercool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeTotal), 101, 2), // uptimetotal - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeControl), 103, 2), // uptimecontrol - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeCompHeating), 105, 2), // uptimecompheating - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeCompCooling), 107, 2), // uptimecompcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeCompPool), 109, 2), // uptimecomppool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(totalCompStarts), 111, 2), // totalcompstarts - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingStarts), 113, 2), // heatingstarts - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(coolingStarts), 115, 2), // coolingstarts - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolStarts), 117, 2), // poolstarts - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsTotal), 119, 2), // nrgconstotal - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompTotal), 121, 2), // nrgconscomptotal - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompHeating), 123, 2), // nrgconscompheating - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompCooling), 125, 2), // nrgconscompcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompPool), 127, 2), // nrgconscomppool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxElecHeatNrgConsTotal), 129, 2), // auxelecheatnrgconstotal - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxElecHeatNrgConsHeating), 131, 2), // auxelecheatnrgconsheating - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxElecHeatNrgConsPool), 133, 2), // auxelecheatnrgconspool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppTotal), 135, 2), // nrgsupptotal - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppHeating), 137, 2), // nrgsuppheating - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppCooling), 139, 2), // nrgsuppcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppPool), 141, 2), // nrgsupppool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPower), 143, 1), // hppower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpMaxPower), 144, 1), // hpmaxpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvMaxComp), 145, 1), // pvmaxcomp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(powerReduction), 146, 1), // powerreduction - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpSetDiffPress), 147, 1), // hpsetdiffpress - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCompOn), 148, 1), // hpcompon - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpActivity), 149, 1), // hpactivity - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrinePumpSpd), 150, 1), // hpbrinepumpspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpSwitchValve), 151, 1), // hpswitchvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCompSpd), 152, 1), // hpcompspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTargetSpd), 153, 1), // hptargetspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCircSpd), 154, 1), // hpcircspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(receiverValveVr0), 155, 1), // recvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(expansionValveVr1), 156, 1), // expvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineIn), 157, 1), // hpbrinein - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineOut), 158, 1), // hpbrineout - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc0), 159, 1), // hptc0 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc1), 160, 1), // hptc1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc3), 161, 1), // hptc3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr1), 162, 1), // hptr1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr3), 163, 1), // hptr3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr4), 164, 1), // hptr4 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr5), 165, 1), // hptr5 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr6), 166, 1), // hptr6 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr7), 167, 1), // hptr7 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTl2), 168, 1), // hptl2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPl1), 169, 1), // hppl1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPh1), 170, 1), // hpph1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTa4), 171, 1), // hpta4 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTw1), 172, 1), // hptw1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolSetTemp), 173, 1), // poolsettemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp4wayValve), 174, 1), // hp4way - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput1), 175, 1), // hpin1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn1Opt), 176, 8), // hpin1opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput2), 184, 1), // hpin2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn2Opt), 185, 8), // hpin2opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput3), 193, 1), // hpin3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn3Opt), 194, 8), // hpin3opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput4), 202, 1), // hpin4 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn4Opt), 203, 8), // hpin4opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatComp), 211, 1), // maxheatcomp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatHeat), 212, 1), // maxheatheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterSource), 213, 1), // auxheatersource - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvCooling), 214, 1), // pvcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOnly), 215, 1), // auxheateronly - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOff), 216, 1), // auxheateroff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterStatus), 217, 1), // auxheaterstatus - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterLevel), 218, 1), // auxheaterlevel - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterDelay), 219, 1), // auxheaterdelay - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxMaxLimit), 220, 1), // auxmaxlimit - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxLimitStart), 221, 1), // auxlimitstart - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMode), 222, 1), // auxheatrmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystHeat), 223, 1), // hphystheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystCool), 224, 1), // hphystcool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystPool), 225, 1), // hphystpool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentMode), 226, 1), // silentmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentFrom), 227, 1), // silentfrom - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentTo), 228, 1), // silentto - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(minTempSilent), 229, 1), // mintempsilent - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempParMode), 230, 1), // tempparmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMixValve), 231, 1), // auxheatmix - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffHeat), 232, 1), // tempdiffheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffCool), 233, 1), // tempdiffcool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(vp_cooling), 234, 1), // vpcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 235, 1), // heatcable - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(VC0valve), 236, 1), // vc0valve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePump), 237, 1), // primepump - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePumpMod), 238, 1), // primepumpmod - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp3wayValve), 239, 1), // hp3way - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep1), 240, 1), // elheatstep1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep2), 241, 1), // elheatstep2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep3), 242, 1), // elheatstep3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpEA0), 243, 1), // hpea0 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPumpMode), 244, 1), // hppumpmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpFan), 245, 1), // fan - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanSpd), 246, 1), // fanspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpShutdown), 247, 1), // shutdown - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCurrPower), 248, 1), // hpcurrpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPowerLimit), 249, 1), // hppowerlimit - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(exhaustTemp), 250, 1), // exhausttemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas), 251, 1), // burngas - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas2), 252, 1), // burngas2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(flameCurr), 253, 1), // flamecurr - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 254, 1), // fanwork - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 255, 1), // ignwork - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 256, 1), // oilpreheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 257, 1), // burnmaxpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 258, 1), // burnminperiod - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 259, 1), // absburnpow - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 260, 1), // heatblock - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 261, 1), // boilhyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 262, 1), // boilhystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 263, 1), // boil2hyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 264, 1), // boil2hystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 265, 1), // curveon - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 266, 1), // curvebase - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 267, 1), // curveend - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 268, 1), // summertemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 269, 1), // nofrostmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 270, 1), // nofrosttemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 271, 2), // gasmeterheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 273, 2), // nrgheat2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 275, 1), // nompower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 276, 1), // netflowtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 277, 1), // heatvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 278, 1), // keepwarmtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 279, 1), // setreturntemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 280, 1), // heating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pumpKickHour), 84, 1), // pumpkickhour + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pumpKickDay), 85, 1), // pumpkickday + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pumpKickDelay), 86, 1), // pumpkickdelay + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(manDefrost), 87, 1), // mandefrost + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgTotal), 88, 2), // nrgtotal + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat), 90, 2), // nrgheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgCool), 92, 2), // nrgcool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterTotal), 94, 2), // metertotal + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterComp), 96, 2), // metercomp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterEHeat), 98, 2), // metereheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterHeat), 100, 2), // meterheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(meterCool), 102, 2), // metercool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeTotal), 104, 2), // uptimetotal + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeControl), 106, 2), // uptimecontrol + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeCompHeating), 108, 2), // uptimecompheating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeCompCooling), 110, 2), // uptimecompcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(upTimeCompPool), 112, 2), // uptimecomppool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(totalCompStarts), 114, 2), // totalcompstarts + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingStarts), 116, 2), // heatingstarts + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(coolingStarts), 118, 2), // coolingstarts + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolStarts), 120, 2), // poolstarts + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsTotal), 122, 2), // nrgconstotal + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompTotal), 124, 2), // nrgconscomptotal + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompHeating), 126, 2), // nrgconscompheating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompCooling), 128, 2), // nrgconscompcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgConsCompPool), 130, 2), // nrgconscomppool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxElecHeatNrgConsTotal), 132, 2), // auxelecheatnrgconstotal + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxElecHeatNrgConsHeating), 134, 2), // auxelecheatnrgconsheating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxElecHeatNrgConsPool), 136, 2), // auxelecheatnrgconspool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppTotal), 138, 2), // nrgsupptotal + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppHeating), 140, 2), // nrgsuppheating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppCooling), 142, 2), // nrgsuppcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgSuppPool), 144, 2), // nrgsupppool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPower), 146, 1), // hppower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpMaxPower), 147, 1), // hpmaxpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvMaxComp), 148, 1), // pvmaxcomp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(powerReduction), 149, 1), // powerreduction + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpSetDiffPress), 150, 1), // hpsetdiffpress + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCompOn), 151, 1), // hpcompon + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpActivity), 152, 1), // hpactivity + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrinePumpSpd), 153, 1), // hpbrinepumpspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpSwitchValve), 154, 1), // hpswitchvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCompSpd), 155, 1), // hpcompspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTargetSpd), 156, 1), // hptargetspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCircSpd), 157, 1), // hpcircspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(receiverValveVr0), 158, 1), // recvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(expansionValveVr1), 159, 1), // expvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineIn), 160, 1), // hpbrinein + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineOut), 161, 1), // hpbrineout + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc0), 162, 1), // hptc0 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc1), 163, 1), // hptc1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc3), 164, 1), // hptc3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr1), 165, 1), // hptr1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr3), 166, 1), // hptr3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr4), 167, 1), // hptr4 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr5), 168, 1), // hptr5 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr6), 169, 1), // hptr6 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr7), 170, 1), // hptr7 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTl2), 171, 1), // hptl2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPl1), 172, 1), // hppl1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPh1), 173, 1), // hpph1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTa4), 174, 1), // hpta4 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTw1), 175, 1), // hptw1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolSetTemp), 176, 1), // poolsettemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp4wayValve), 177, 1), // hp4way + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput1), 178, 1), // hpin1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn1Opt), 179, 8), // hpin1opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput2), 187, 1), // hpin2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn2Opt), 188, 8), // hpin2opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput3), 196, 1), // hpin3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn3Opt), 197, 8), // hpin3opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput4), 205, 1), // hpin4 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn4Opt), 206, 8), // hpin4opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatComp), 214, 1), // maxheatcomp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatHeat), 215, 1), // maxheatheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterSource), 216, 1), // auxheatersource + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvCooling), 217, 1), // pvcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOnly), 218, 1), // auxheateronly + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOff), 219, 1), // auxheateroff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterStatus), 220, 1), // auxheaterstatus + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterLevel), 221, 1), // auxheaterlevel + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterDelay), 222, 1), // auxheaterdelay + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxMaxLimit), 223, 1), // auxmaxlimit + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxLimitStart), 224, 1), // auxlimitstart + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMode), 225, 1), // auxheatrmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystHeat), 226, 1), // hphystheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystCool), 227, 1), // hphystcool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystPool), 228, 1), // hphystpool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentMode), 229, 1), // silentmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentFrom), 230, 1), // silentfrom + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentTo), 231, 1), // silentto + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(minTempSilent), 232, 1), // mintempsilent + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempParMode), 233, 1), // tempparmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMixValve), 234, 1), // auxheatmix + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffHeat), 235, 1), // tempdiffheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffCool), 236, 1), // tempdiffcool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(vp_cooling), 237, 1), // vpcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 238, 1), // heatcable + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(VC0valve), 239, 1), // vc0valve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePump), 240, 1), // primepump + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePumpMod), 241, 1), // primepumpmod + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp3wayValve), 242, 1), // hp3way + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep1), 243, 1), // elheatstep1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep2), 244, 1), // elheatstep2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep3), 245, 1), // elheatstep3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpEA0), 246, 1), // hpea0 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPumpMode), 247, 1), // hppumpmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpFan), 248, 1), // fan + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanSpd), 249, 1), // fanspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpShutdown), 250, 1), // shutdown + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCurrPower), 251, 1), // hpcurrpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPowerLimit), 252, 1), // hppowerlimit + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(exhaustTemp), 253, 1), // exhausttemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas), 254, 1), // burngas + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas2), 255, 1), // burngas2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(flameCurr), 256, 1), // flamecurr + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 257, 1), // fanwork + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 258, 1), // ignwork + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 259, 1), // oilpreheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 260, 1), // burnmaxpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 261, 1), // burnminperiod + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 262, 1), // absburnpow + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 263, 1), // heatblock + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 264, 1), // boilhyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 265, 1), // boilhystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 266, 1), // boil2hyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 267, 1), // boil2hystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 268, 1), // curveon + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 269, 1), // curvebase + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 270, 1), // curveend + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 271, 1), // summertemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 272, 1), // nofrostmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 273, 1), // nofrosttemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 274, 2), // gasmeterheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 276, 2), // nrgheat2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 278, 1), // nompower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 279, 1), // netflowtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 280, 1), // heatvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 281, 1), // keepwarmtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 282, 1), // setreturntemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 283, 1), // heating REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw), 0, 2), // nrg REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(meterWw), 2, 2), // meter REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(upTimeCompWw), 4, 2), // uptimecomp @@ -308,87 +311,88 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(summertemp), 8, 1), // summertemp REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(designtemp), 9, 1), // designtemp REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(offsettemp), 10, 1), // offsettemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(minflowtemp), 11, 1), // minflowtemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(maxflowtemp), 12, 1), // maxflowtemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roominfluence), 13, 1), // roominfluence - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roominfl_factor), 14, 1), // roominflfactor - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(curroominfl), 15, 1), // curroominfl - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nofrostmode), 16, 1), // nofrostmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nofrosttemp), 17, 1), // nofrosttemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(targetflowtemp), 18, 1), // targetflowtemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatingtype), 19, 1), // heatingtype - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(summersetmode), 20, 1), // summersetmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpoperatingmode), 21, 1), // hpoperatingmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(summermode), 22, 1), // summermode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpoperatingstate), 23, 1), // hpoperatingstate - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacationmode), 24, 1), // vacationmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(controlmode), 25, 1), // controlmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(program), 26, 1), // program - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(tempautotemp), 27, 1), // tempautotemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(cooltemp), 28, 1), // cooltemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(fastheatup), 29, 1), // fastheatup - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(comfortPointOffset), 30, 1), // comfoffset - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(comfortPointTemp), 31, 1), // comftemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchonoptimization), 32, 1), // switchonoptimization - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducemode), 33, 1), // reducemode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(noreducetemp), 34, 1), // noreducetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducetemp), 35, 1), // reducetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(wwprio), 36, 1), // dhwprio - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpcooling), 37, 1), // hpcooling - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolingOn), 38, 1), // coolingon - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpmode), 39, 1), // hpmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dewoffset), 40, 1), // dewoffset - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomtempdiff), 41, 1), // roomtempdiff - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpminflowtemp), 42, 1), // hpminflowtemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(control), 43, 1), // control - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotetemp), 44, 1), // remotetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotehum), 45, 1), // remotehum - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatondelay), 46, 1), // heatondelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatoffdelay), 47, 1), // heatoffdelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(instantstart), 48, 1), // instantstart - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boost), 49, 1), // boost - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boosttime), 50, 1), // boosttime - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolstart), 51, 1), // coolstart - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolondelay), 52, 1), // coolondelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(cooloffdelay), 53, 1), // cooloffdelay - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchProgMode), 54, 1), // switchprogmode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(redthreshold), 55, 1), // redthreshold - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(solarinfl), 56, 1), // solarinfl - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(currsolarinfl), 57, 1), // currsolarinfl - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatingPID), 58, 1), // heatingpid - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pumpopt), 59, 1), // pumpopt - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttimefloor), 60, 1), // inttimefloor - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttime), 61, 1), // inttime - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daytemp), 62, 1), // daytemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nighttemp2), 63, 1), // nighttemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaytemp), 64, 1), // holidaytemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaymode), 65, 1), // holidaymode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(flowtempoffset), 66, 1), // flowtempoffset - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidays), 67, 13), // holidays - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations), 80, 13), // vacations - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pause), 93, 1), // pause - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(party), 94, 1), // party - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducetemp), 95, 1), // vacreducetemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducemode), 96, 1), // vacreducemode - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime1), 97, 8), // switchtime1 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime2), 105, 8), // switchtime2 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(offtemp), 113, 1), // offtemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daylowtemp), 114, 1), // daytemp2 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daymidtemp), 115, 1), // daytemp3 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dayhightemp), 116, 1), // daytemp4 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime), 117, 8), // switchtime - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations1), 125, 11), // vacations1 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations2), 136, 11), // vacations2 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations3), 147, 11), // vacations3 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations4), 158, 11), // vacations4 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations5), 169, 11), // vacations5 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations6), 180, 11), // vacations6 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations7), 191, 11), // vacations7 - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducehours), 202, 1), // reducehours - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reduceminutes), 203, 1), // reduceminutes - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heattemp), 204, 1), // heattemp - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomsensor), 205, 1), // roomsensor - REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatup), 206, 1), // heatup + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(baseflowtemp), 11, 1), // baseflowtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(minflowtemp), 12, 1), // minflowtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(maxflowtemp), 13, 1), // maxflowtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roominfluence), 14, 1), // roominfluence + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roominfl_factor), 15, 1), // roominflfactor + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(curroominfl), 16, 1), // curroominfl + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nofrostmode), 17, 1), // nofrostmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nofrosttemp), 18, 1), // nofrosttemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(targetflowtemp), 19, 1), // targetflowtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatingtype), 20, 1), // heatingtype + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(summersetmode), 21, 1), // summersetmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpoperatingmode), 22, 1), // hpoperatingmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(summermode), 23, 1), // summermode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpoperatingstate), 24, 1), // hpoperatingstate + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacationmode), 25, 1), // vacationmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(controlmode), 26, 1), // controlmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(program), 27, 1), // program + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(tempautotemp), 28, 1), // tempautotemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(cooltemp), 29, 1), // cooltemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(fastheatup), 30, 1), // fastheatup + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(comfortPointOffset), 31, 1), // comfoffset + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(comfortPointTemp), 32, 1), // comftemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchonoptimization), 33, 1), // switchonoptimization + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducemode), 34, 1), // reducemode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(noreducetemp), 35, 1), // noreducetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducetemp), 36, 1), // reducetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(wwprio), 37, 1), // dhwprio + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpcooling), 38, 1), // hpcooling + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolingOn), 39, 1), // coolingon + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpmode), 40, 1), // hpmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dewoffset), 41, 1), // dewoffset + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomtempdiff), 42, 1), // roomtempdiff + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(hpminflowtemp), 43, 1), // hpminflowtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(control), 44, 1), // control + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotetemp), 45, 1), // remotetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(remotehum), 46, 1), // remotehum + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatondelay), 47, 1), // heatondelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatoffdelay), 48, 1), // heatoffdelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(instantstart), 49, 1), // instantstart + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boost), 50, 1), // boost + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(boosttime), 51, 1), // boosttime + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolstart), 52, 1), // coolstart + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(coolondelay), 53, 1), // coolondelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(cooloffdelay), 54, 1), // cooloffdelay + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchProgMode), 55, 1), // switchprogmode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(redthreshold), 56, 1), // redthreshold + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(solarinfl), 57, 1), // solarinfl + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(currsolarinfl), 58, 1), // currsolarinfl + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatingPID), 59, 1), // heatingpid + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pumpopt), 60, 1), // pumpopt + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttimefloor), 61, 1), // inttimefloor + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(inttime), 62, 1), // inttime + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daytemp), 63, 1), // daytemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(nighttemp2), 64, 1), // nighttemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaytemp), 65, 1), // holidaytemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidaymode), 66, 1), // holidaymode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(flowtempoffset), 67, 1), // flowtempoffset + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(holidays), 68, 13), // holidays + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations), 81, 13), // vacations + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(pause), 94, 1), // pause + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(party), 95, 1), // party + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducetemp), 96, 1), // vacreducetemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacreducemode), 97, 1), // vacreducemode + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime1), 98, 8), // switchtime1 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime2), 106, 8), // switchtime2 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(offtemp), 114, 1), // offtemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daylowtemp), 115, 1), // daytemp2 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(daymidtemp), 116, 1), // daytemp3 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(dayhightemp), 117, 1), // daytemp4 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(switchtime), 118, 8), // switchtime + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations1), 126, 11), // vacations1 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations2), 137, 11), // vacations2 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations3), 148, 11), // vacations3 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations4), 159, 11), // vacations4 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations5), 170, 11), // vacations5 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations6), 181, 11), // vacations6 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(vacations7), 192, 11), // vacations7 + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reducehours), 203, 1), // reducehours + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(reduceminutes), 204, 1), // reduceminutes + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heattemp), 205, 1), // heattemp + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomsensor), 206, 1), // roomsensor + REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatup), 207, 1), // heatup REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(mode), 0, 1), // mode REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(modetype), 1, 1), // modetype REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(wwSetTemp), 2, 1), // settemp From 69d4163b9d6d1375c43f670019484943097d51de Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Mar 2026 14:12:47 +0100 Subject: [PATCH 073/162] fix device_class #2980 --- src/core/mqtt.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp index 225c7f56e..b73f4ef25 100644 --- a/src/core/mqtt.cpp +++ b/src/core/mqtt.cpp @@ -1191,7 +1191,11 @@ void Mqtt::add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8 doc[ic_ha] = F_(iconpercent); // set icon } doc[sc_ha] = sc_ha_measurement; - doc[dc_ha] = "power_factor"; + if (entity == FL_(airHumidity)[0] || entity == FL_(remotehum)[0]) { + doc[dc_ha] = "humidity"; + } else if (entity == FL_(battery)[0]) { + doc[dc_ha] = "battery"; + } break; case DeviceValueUOM::SECONDS: case DeviceValueUOM::MINUTES: @@ -1544,8 +1548,8 @@ void Mqtt::add_ha_dev_section(JsonObject doc, const char * name, const bool crea } // add mf (manufacturer/brand), mdl (model), sw (software version) and via_device - dev_json["mf"] = brand != nullptr ? brand : "EMS-ESP"; - dev_json["mdl"] = model != nullptr ? model : "EMS-ESP"; + dev_json["mf"] = brand != nullptr ? brand : "EMS-ESP"; + dev_json["mdl"] = model != nullptr ? model : "EMS-ESP"; dev_json["sw"] = version != nullptr ? version : "v" + std::string(EMSESP_APP_VERSION); dev_json["via_device"] = Mqtt::basename(); } From 6836b6197fe9ae50ee5aa5d747f2ac02f943b75e Mon Sep 17 00:00:00 2001 From: misa1515 <61636045+misa1515@users.noreply.github.com> Date: Sun, 15 Mar 2026 21:27:58 +0100 Subject: [PATCH 074/162] Update locale_translations.h --- src/core/locale_translations.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index 839522067..65cda4859 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -198,8 +198,8 @@ MAKE_WORD_TRANSLATION(error, "error", "Fehler", "error", "Fel", "błąd", "feil" MAKE_WORD_TRANSLATION(history, "history", "Fehlerspeicher", "geschiedenis", "historik", "historia", "historikk", "historique", "geçmiş", "storico", "história", "historie") MAKE_WORD_TRANSLATION(message, "message", "Meldung", "melding", "meddelande", "komunikat", "melding", "message", "mesajı", "messaggio", "správa", "zpráva") MAKE_WORD_TRANSLATION(hp_error, "hp error", "WP Fehler", "hp error", "hp Fel", "hp błąd", "hp feil", "hp erreur", "hp Hata", "hp errore", "hp error", "hp chyba") -MAKE_WORD_TRANSLATION(factory, "factory", "werkseinst.", "", "", "", "", "", "", "", "", "") -MAKE_WORD_TRANSLATION(burn_starts, "burner starts", "Brennerstarts", "", "", "", "", "", "", "", "", "") +MAKE_WORD_TRANSLATION(factory, "factory", "werkseinst.", "", "", "", "", "", "", "", "nastavenie z výroby", "nastavení z výroby") +MAKE_WORD_TRANSLATION(burn_starts, "burner starts", "Brennerstarts", "", "", "", "", "", "", "", "štarty horáka", "") MAKE_WORD_TRANSLATION(na, "n/a", "n/a", "n/a", "n/a", "nd.", "n/a", "n/c", "mevcut değil", "n/a", "n/a", "n/a") MAKE_WORD_TRANSLATION(inverted, "inverted", "invertiert", "omgekeerd", "inverterad", "odwrócony", "invertert", "inversé", "ters", "invertito", "invertovaný", "invertovaný") From a9f50d9371772722b22ba1066ea6fa89b99af791 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 16 Mar 2026 12:55:27 +0100 Subject: [PATCH 075/162] update version number fixes #2981 --- src/core/emsdevice.h | 4 ++++ src/core/emsesp.cpp | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index eb7e9c2a9..f584e9b58 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -90,6 +90,10 @@ class EMSdevice { return version_; } + void version(const char * version) { + strlcpy(version_, version, sizeof(version_)); + } + uint8_t brand() const { return brand_; } diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index 4b9dae4a4..9286827b5 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1307,9 +1307,16 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const // first check to see if we already have it, if so update the record for (auto it = emsdevices.begin(); it != emsdevices.end(); ++it) { if ((*it) && (*it)->is_device_id(device_id)) { - if (product_id == 0 || (*it)->product_id() != 0) { // update only with valid product_id + if (product_id == 0) { // no product-id, ignore + return false; + } + if ((*it)->product_id() == product_id) { // update version if we have valid product_id + if (!strcmp((*it)->version(), "00.00")) { + (*it)->version(version); + } return true; } + // product-id has changed for this device-id, delete and re-add (*it)->erase_device_values(); emsdevices.erase(it); // erase the old device without product_id and re detect break; From b0157f288ed9e9122fccf5b9d1c56ac95e9d2cfe Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 16 Mar 2026 14:01:45 +0100 Subject: [PATCH 076/162] update changelog, dev10 --- CHANGELOG_LATEST.md | 2 ++ src/emsesp_version.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 68de6dafb..7c69530ce 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -25,3 +25,5 @@ For more details go to [emsesp.org](https://emsesp.org/). - store scheduler active state to nvs [#2946](https://github.com/emsesp/EMS-ESP32/discussions/2946) - translated modes `heat` and `eco` for HA-climate mode-str-tpl - support `minflowtemp` and `baseflowtemp` [#2969](https://github.com/emsesp/EMS-ESP32/discussions/2969) +- update version if it is 00.00 in first read [#2981](https://github.com/emsesp/EMS-ESP32/issues/2981) +- device class for % values [#2980](https://github.com/emsesp/EMS-ESP32/issues/2980) diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 4d8361cf0..f1c420f81 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.9" +#define EMSESP_APP_VERSION "3.8.2-dev.10" From cc6006267820a88916c7e48e68f95656ed089aec Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Mar 2026 10:48:47 +0100 Subject: [PATCH 077/162] dev.11, fix #2988, asyncWebserver 3.10.2 --- interface/eslint.config.js | 3 +- interface/package.json | 6 +- interface/pnpm-lock.yaml | 293 +++++++++++++++++++------------------ platformio.ini | 2 +- src/emsesp_version.h | 2 +- 5 files changed, 157 insertions(+), 149 deletions(-) diff --git a/interface/eslint.config.js b/interface/eslint.config.js index 4eca2f5e5..bacff3965 100644 --- a/interface/eslint.config.js +++ b/interface/eslint.config.js @@ -1,9 +1,10 @@ // @ts-check import eslint from '@eslint/js'; import prettierConfig from 'eslint-config-prettier'; +import { defineConfig } from 'eslint/config'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, ...tseslint.configs.recommendedTypeChecked, prettierConfig, diff --git a/interface/package.json b/interface/package.json index ee861695f..76c9d28cf 100644 --- a/interface/package.json +++ b/interface/package.json @@ -50,7 +50,7 @@ "@babel/core": "^7.29.0", "@eslint/js": "^10.0.1", "@preact/compat": "^18.3.2", - "@preact/preset-vite": "^2.10.3", + "@preact/preset-vite": "^2.10.4", "@trivago/prettier-plugin-sort-imports": "^6.0.2", "@types/node": "^25.5.0", "@types/react": "^19.2.14", @@ -61,8 +61,8 @@ "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.1", "rollup-plugin-visualizer": "^7.0.1", - "terser": "^5.46.0", - "typescript-eslint": "^8.57.0", + "terser": "^5.46.1", + "typescript-eslint": "^8.57.1", "vite": "^7.3.1", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 274898da3..a64a1f4b8 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -82,8 +82,8 @@ importers: specifier: ^10.0.1 version: 10.0.1(eslint@10.0.3) '@preact/preset-vite': - specifier: ^2.10.3 - version: 2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) + specifier: ^2.10.4 + version: 2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) @@ -115,20 +115,20 @@ importers: specifier: ^7.0.1 version: 7.0.1(rolldown@1.0.0-rc.9)(rollup@4.59.0) terser: - specifier: ^5.46.0 - version: 5.46.0 + specifier: ^5.46.1 + version: 5.46.1 typescript-eslint: - specifier: ^8.57.0 - version: 8.57.0(eslint@10.0.3)(typescript@5.9.3) + specifier: ^8.57.1 + version: 8.57.1(eslint@10.0.3)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) + version: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) + version: 0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) + version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) packages: @@ -194,12 +194,12 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -221,8 +221,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.6': - resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} '@babel/template@7.28.6': @@ -660,11 +660,11 @@ packages: peerDependencies: preact: '*' - '@preact/preset-vite@2.10.3': - resolution: {integrity: sha512-1SiS+vFItpkNdBs7q585PSAIln0wBeBdcpJYbzPs1qipsb/FssnkUioNXuRsb8ZnU8YEQHr+3v8+/mzWSnTQmg==} + '@preact/preset-vite@2.10.4': + resolution: {integrity: sha512-L7RQRs2GiG0lLUz7JSg07vU6lhlzdIthH0eqYZmRR70tTB9ikKCq2LHr+PZzhzIOco3Dioi6P6e/fjAmDUMJbQ==} peerDependencies: '@babel/core': 7.x - vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x + vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x || 8.x '@prefresh/babel-plugin@0.5.3': resolution: {integrity: sha512-57LX2SHs4BX2s1IwCjNzTE2OJeEepRCNf1VTEpbNcUyHfMO68eeOWGDIt4ob9aYlW6PEWZ1SuwNikuoIXANDtQ==} @@ -1033,63 +1033,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.57.0': - resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} + '@typescript-eslint/eslint-plugin@8.57.1': + resolution: {integrity: sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.0 + '@typescript-eslint/parser': ^8.57.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.57.0': - resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} + '@typescript-eslint/parser@8.57.1': + resolution: {integrity: sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.57.0': - resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} + '@typescript-eslint/project-service@8.57.1': + resolution: {integrity: sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.57.0': - resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} + '@typescript-eslint/scope-manager@8.57.1': + resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.0': - resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} + '@typescript-eslint/tsconfig-utils@8.57.1': + resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.57.0': - resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} + '@typescript-eslint/type-utils@8.57.1': + resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.57.0': - resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} + '@typescript-eslint/types@8.57.1': + resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.0': - resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} + '@typescript-eslint/typescript-estree@8.57.1': + resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.57.0': - resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} + '@typescript-eslint/utils@8.57.1': + resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.57.0': - resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} + '@typescript-eslint/visitor-keys@8.57.1': + resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1181,8 +1181,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.7: - resolution: {integrity: sha512-1ghYO3HnxGec0TCGBXiDLVns4eCSx4zJpxnHrlqFQajmhfKMQBzUGDdkMK7fUW7PTHTeLf+j87aTuKuuwWzMGw==} + baseline-browser-mapping@2.10.8: + resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1280,8 +1280,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001778: - resolution: {integrity: sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==} + caniuse-lite@1.0.30001780: + resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1516,8 +1516,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.313: - resolution: {integrity: sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==} + electron-to-chromium@1.5.321: + resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1878,8 +1878,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.4.1: - resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} @@ -2913,8 +2913,8 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - sax@1.5.0: - resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} scheduler@0.27.0: @@ -3127,8 +3127,8 @@ packages: resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==} engines: {node: '>=4'} - terser@5.46.0: - resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + terser@5.46.1: + resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} engines: {node: '>=10'} hasBin: true @@ -3203,8 +3203,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.57.0: - resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==} + typescript-eslint@8.57.1: + resolution: {integrity: sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3262,10 +3262,10 @@ packages: peerDependencies: vite: '>=2.0.0' - vite-prerender-plugin@0.5.12: - resolution: {integrity: sha512-EiwhbMn+flg14EysbLTmZSzq8NGTxhytgK3bf4aGRF1evWLGwZiHiUJ1KZDvbxgKbMf2pG6fJWGEa3UZXOnR1g==} + vite-prerender-plugin@0.5.13: + resolution: {integrity: sha512-IKSpYkzDBsKAxa05naRbj7GvNVMSdww/Z/E89oO3xndz+gWnOBOKOAbEXv7qDhktY/j3vHgJmoV1pPzqU2tx9g==} peerDependencies: - vite: 5.x || 6.x || 7.x + vite: 5.x || 6.x || 7.x || 8.x vite-tsconfig-paths@6.1.1: resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} @@ -3385,6 +3385,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zimmerframe@1.1.4: + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + snapshots: '@alova/adapter-xhr@2.3.1(alova@3.5.1)': @@ -3408,8 +3411,8 @@ snapshots: '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -3424,7 +3427,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -3468,12 +3471,12 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.28.6': + '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.0': + '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -3500,12 +3503,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/runtime@7.28.6': {} + '@babel/runtime@7.29.2': {} '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -3513,7 +3516,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -3544,7 +3547,7 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.28.6 - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -3575,7 +3578,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -3601,7 +3604,7 @@ snapshots: '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) @@ -3778,7 +3781,7 @@ snapshots: '@mui/icons-material@7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 optionalDependencies: @@ -3786,7 +3789,7 @@ snapshots: '@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@mui/core-downloads-tracker': 7.3.9 '@mui/system': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@mui/types': 7.4.12(@types/react@19.2.14) @@ -3807,7 +3810,7 @@ snapshots: '@mui/private-theming@7.3.9(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@mui/utils': 7.3.9(@types/react@19.2.14)(react@19.2.4) prop-types: 15.8.1 react: 19.2.4 @@ -3816,7 +3819,7 @@ snapshots: '@mui/styled-engine@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 '@emotion/sheet': 1.4.0 @@ -3829,7 +3832,7 @@ snapshots: '@mui/system@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@mui/private-theming': 7.3.9(@types/react@19.2.14)(react@19.2.4) '@mui/styled-engine': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) '@mui/types': 7.4.12(@types/react@19.2.14) @@ -3845,13 +3848,13 @@ snapshots: '@mui/types@7.4.12(@types/react@19.2.14)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 optionalDependencies: '@types/react': 19.2.14 '@mui/utils@7.3.9(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@mui/types': 7.4.12(@types/react@19.2.14) '@types/prop-types': 15.7.15 clsx: 2.1.1 @@ -3895,18 +3898,20 @@ snapshots: dependencies: preact: 10.29.0 - '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0))': + '@preact/preset-vite@2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) + '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 + magic-string: 0.30.21 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + vite-prerender-plugin: 0.5.13(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + zimmerframe: 1.1.4 transitivePeerDependencies: - preact - rollup @@ -3920,7 +3925,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0))': + '@prefresh/vite@2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3928,7 +3933,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.0 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) transitivePeerDependencies: - supports-color @@ -4084,7 +4089,7 @@ snapshots: '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: '@babel/generator': 7.29.1 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 @@ -4176,14 +4181,14 @@ snapshots: dependencies: '@types/node': 25.5.0 - '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/parser': 8.57.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/type-utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 @@ -4192,41 +4197,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.1(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3 eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.0': + '@typescript-eslint/scope-manager@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 - '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.1(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) debug: 4.4.3 eslint: 10.0.3 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -4234,14 +4239,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.0': {} + '@typescript-eslint/types@8.57.1': {} - '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3 minimatch: 10.2.4 semver: 7.7.4 @@ -4251,20 +4256,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.1(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.57.0': + '@typescript-eslint/visitor-keys@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/types': 8.57.1 eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.16.0): @@ -4321,7 +4326,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 cosmiconfig: 7.1.0 resolve: 1.22.11 @@ -4335,7 +4340,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.7: {} + baseline-browser-mapping@2.10.8: {} bin-build@3.0.0: dependencies: @@ -4396,9 +4401,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.7 - caniuse-lite: 1.0.30001778 - electron-to-chromium: 1.5.313 + baseline-browser-mapping: 2.10.8 + caniuse-lite: 1.0.30001780 + electron-to-chromium: 1.5.321 node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4460,7 +4465,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001778: {} + caniuse-lite@1.0.30001780: {} caw@2.0.1: dependencies: @@ -4689,7 +4694,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 csstype: 3.2.3 dom-serializer@1.4.1: @@ -4763,7 +4768,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.313: {} + electron-to-chromium@1.5.321: {} emoji-regex@10.6.0: {} @@ -5128,10 +5133,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.1 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.4.1: {} + flatted@3.4.2: {} for-each@0.3.5: dependencies: @@ -5997,7 +6002,7 @@ snapshots: react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -6011,7 +6016,7 @@ snapshots: react-window@1.8.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 memoize-one: 5.2.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -6147,7 +6152,7 @@ snapshots: safe-buffer@5.2.1: {} - sax@1.5.0: {} + sax@1.6.0: {} scheduler@0.27.0: {} @@ -6322,7 +6327,7 @@ snapshots: css-tree: 1.1.3 csso: 4.2.0 picocolors: 1.1.1 - sax: 1.5.0 + sax: 1.6.0 stable: 0.1.8 tar-stream@1.6.2: @@ -6342,7 +6347,7 @@ snapshots: temp-dir: 1.0.0 uuid: 3.4.0 - terser@5.46.0: + terser@5.46.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -6406,12 +6411,12 @@ snapshots: dependencies: typescript: 5.9.3 - typescript-eslint@8.57.0(eslint@10.0.3)(typescript@5.9.3): + typescript-eslint@8.57.1(eslint@10.0.3)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: @@ -6457,7 +6462,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)): + vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6482,11 +6487,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)): + vite-prerender-plugin@0.5.13(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6494,19 +6499,19 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0): + vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1): dependencies: esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) @@ -6518,7 +6523,7 @@ snapshots: '@types/node': 25.5.0 fsevents: 2.3.3 lightningcss: 1.32.0 - terser: 5.46.0 + terser: 5.46.1 which-typed-array@1.1.20: dependencies: @@ -6598,3 +6603,5 @@ snapshots: fd-slicer: 1.1.0 yocto-queue@0.1.0: {} + + zimmerframe@1.1.4: {} diff --git a/platformio.ini b/platformio.ini index a9655bb2d..a8add2c1a 100644 --- a/platformio.ini +++ b/platformio.ini @@ -106,7 +106,7 @@ board_build.filesystem = littlefs lib_deps = bblanchon/ArduinoJson @ 7.4.2 ESP32Async/AsyncTCP @ 3.4.10 - ESP32Async/ESPAsyncWebServer @ 3.10.1 + ESP32Async/ESPAsyncWebServer @ 3.10.2 https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 diff --git a/src/emsesp_version.h b/src/emsesp_version.h index f1c420f81..d13dd7e33 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.10" +#define EMSESP_APP_VERSION "3.8.2-dev.11" From 205d826adb6fd454d40963d6e347a1abbcb8acf7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Mar 2026 14:48:34 +0100 Subject: [PATCH 078/162] asyncWebserver 3.10.3, remove C6 (no core 2 support) --- interface/pnpm-lock.yaml | 36 ++++++++++++++++++------------------ platformio.ini | 15 +-------------- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index a64a1f4b8..a36b65459 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -237,11 +237,11 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@emnapi/core@1.9.0': - resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} + '@emnapi/core@1.9.1': + resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} - '@emnapi/runtime@1.9.0': - resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} '@emnapi/wasi-threads@1.2.0': resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} @@ -1181,8 +1181,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.8: - resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==} + baseline-browser-mapping@2.10.9: + resolution: {integrity: sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==} engines: {node: '>=6.0.0'} hasBin: true @@ -3163,8 +3163,8 @@ packages: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} - ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -3528,13 +3528,13 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@emnapi/core@1.9.0': + '@emnapi/core@1.9.1': dependencies: '@emnapi/wasi-threads': 1.2.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.0': + '@emnapi/runtime@1.9.1': dependencies: tslib: 2.8.1 optional: true @@ -3866,8 +3866,8 @@ snapshots: '@napi-rs/wasm-runtime@1.1.1': dependencies: - '@emnapi/core': 1.9.0 - '@emnapi/runtime': 1.9.0 + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -4192,7 +4192,7 @@ snapshots: eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4234,7 +4234,7 @@ snapshots: '@typescript-eslint/utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) debug: 4.4.3 eslint: 10.0.3 - ts-api-utils: 2.4.0(typescript@5.9.3) + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4251,7 +4251,7 @@ snapshots: minimatch: 10.2.4 semver: 7.7.4 tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4340,7 +4340,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.8: {} + baseline-browser-mapping@2.10.9: {} bin-build@3.0.0: dependencies: @@ -4401,7 +4401,7 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.8 + baseline-browser-mapping: 2.10.9 caniuse-lite: 1.0.30001780 electron-to-chromium: 1.5.321 node-releases: 2.0.36 @@ -6381,7 +6381,7 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - ts-api-utils@2.4.0(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 diff --git a/platformio.ini b/platformio.ini index a8add2c1a..528c0822e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -106,7 +106,7 @@ board_build.filesystem = littlefs lib_deps = bblanchon/ArduinoJson @ 7.4.2 ESP32Async/AsyncTCP @ 3.4.10 - ESP32Async/ESPAsyncWebServer @ 3.10.2 + ESP32Async/ESPAsyncWebServer @ 3.10.3 https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 @@ -168,19 +168,6 @@ build_flags = ${common.build_flags} -DBOARD_C3_MINI_V1 -; XIAO ESP32C - 512KB SRAM & 4MB Flash - https://wiki.seeedstudio.com/xiao_esp32c6_getting_started/ -[env:c6] -framework = arduino -board_build.partitions = partitions/esp32_partition_4M.csv -board_upload.flash_size = 4MB -board_build.app_partition_name = app0 -platform = https://github.com/pioarduino/platform-espressif32/releases/download/54.03.21-2/platform-espressif32.zip ; Arduino Release v3.2.1 based on ESP-IDF v5.4.2 -; platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.30-2/platform-espressif32.zip ; Arduino Release v3.3.0 based on ESP-IDF v5.5.0 -board = seeed_xiao_esp32c6 -build_flags = - ${common.build_flags} - -DBOARD_C6 - ; foundation for building and testing natively, standalone without an ESP32 ; use the `standalone` environment instead of `native` for testing [env:native] From d04e7c36f332466ddd62f071ad2b023508ebf27b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Mar 2026 14:50:58 +0100 Subject: [PATCH 079/162] reset reason --- src/core/system.cpp | 51 +++++++++++++++------------------------------ 1 file changed, 17 insertions(+), 34 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index a2f37065d..777db8fd8 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -34,25 +34,7 @@ #endif #ifndef EMSESP_STANDALONE -#ifdef ESP_IDF_VERSION_MAJOR // IDF 4+ -#if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4 -#include "../esp32/rom/rtc.h" -#elif CONFIG_IDF_TARGET_ESP32S2 -#include "../esp32s2/rom/rtc.h" -#elif CONFIG_IDF_TARGET_ESP32C3 -#include "../esp32c3/rom/rtc.h" -#elif CONFIG_IDF_TARGET_ESP32S3 -#include "../esp32s3/rom/rtc.h" -#else -#error Target CONFIG_IDF_TARGET is not supported -#endif -#else // ESP32 Before IDF 4.0 -#include "../rom/rtc.h" -#endif #include -#endif - -#ifndef EMSESP_STANDALONE #include "esp_efuse.h" #endif @@ -2534,37 +2516,38 @@ bool System::command_restart(const char * value, const int8_t id) { std::string System::reset_reason(uint8_t cpu) const { #ifndef EMSESP_STANDALONE - switch (rtc_get_reset_reason(cpu)) { - case 1: + switch (esp_rom_get_reset_reason(cpu)) { + case RESET_REASON_CHIP_POWER_ON: return ("Power on reset"); - // case 2 :reset pin not on esp32 - case 3: + case 2: // not on esp32 + return ("reset pin"); + case RESET_REASON_CORE_SW: return ("Software reset"); case 4: // not on S2, C3 return ("Legacy watch dog reset"); - case 5: + case RESET_REASON_CORE_DEEP_SLEEP: return ("Deep sleep reset"); - case 6: // not on S2, C3 - return ("Reset by SDIO"); - case 7: + case 6: // RESET_REASON_CORE_SDIO: // not on S2, S3, C3 + return ("Reset by SDIO"); + case RESET_REASON_CORE_MWDT0: return ("Timer group0 watch dog reset"); - case 8: + case RESET_REASON_CORE_MWDT1: return ("Timer group1 watch dog reset"); - case 9: + case RESET_REASON_CORE_RTC_WDT: return ("RTC watch dog reset"); case 10: return ("Intrusion reset CPU"); - case 11: + case RESET_REASON_CPU0_MWDT0: return ("Timer group reset CPU"); - case 12: + case RESET_REASON_CPU0_SW: return ("Software reset CPU"); - case 13: + case RESET_REASON_CPU0_RTC_WDT: return ("RTC watch dog reset: CPU"); - case 14: // not on S2, C3 + case 14: // RESET_REASON_CPU1_CPU0: // not on S2, S3, C3 return ("APP CPU reset by PRO CPU"); - case 15: + case RESET_REASON_SYS_BROWN_OUT: return ("Brownout reset"); - case 16: + case RESET_REASON_SYS_RTC_WDT: return ("RTC watch dog reset: CPU+RTC"); default: break; From df808a2bcffc2a6808c0eee189c4bc43259ce9e0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Mar 2026 14:53:07 +0100 Subject: [PATCH 080/162] dev.12, add dhw4 circuit, #2991 --- CHANGELOG_LATEST.md | 1 + src/devices/water.cpp | 35 +++++++++++++++++++++-------------- src/emsesp_version.h | 2 +- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 7c69530ce..eceb2daf3 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -12,6 +12,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - prometheus metrics for temperature/analog/scheduler/custom [#2962](https://github.com/emsesp/EMS-ESP32/issues/2962) - boiler pumpkick [#2965](https://github.com/emsesp/EMS-ESP32/discussions/2965) - heatpump reset [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) +- 2.nd freshwater module (dhw4) [#2991](https://github.com/emsesp/EMS-ESP32/issues/2991) ## Fixed diff --git a/src/devices/water.cpp b/src/devices/water.cpp index 94a8c9cf2..d535504ac 100644 --- a/src/devices/water.cpp +++ b/src/devices/water.cpp @@ -30,15 +30,23 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c int8_t tag = DeviceValueTAG::TAG_DHW1 + dhw_; if (flags == EMSdevice::EMS_DEVICE_FLAG_SM100) { // device_id 0x2A, DHW3 // telegram handlers - register_telegram_type(0x07D6, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); - register_telegram_type(0x07AA, "SM100wwStatus", false, MAKE_PF_CB(process_SM100wwStatus)); - register_telegram_type(0x07AB, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); - register_telegram_type(0x07AC, "SM100wwParam1", false, MAKE_PF_CB(process_SM100wwParam2)); - register_telegram_type(0x07A5, "SM100wwCirc", true, MAKE_PF_CB(process_SM100wwCirc)); - register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); - register_telegram_type(0x07AE, "SM100wwKeepWarm", true, MAKE_PF_CB(process_SM100wwKeepWarm)); - register_telegram_type(0x07E0, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); - register_telegram_type(0x07AD, "SM100ValveStatus", false, MAKE_PF_CB(process_SM100ValveStatus)); + if (tag == DeviceValueTAG::TAG_DHW3) { + register_telegram_type(0x07AA, "SM100wwStatus", false, MAKE_PF_CB(process_SM100wwStatus)); + register_telegram_type(0x07AC, "SM100wwParam1", false, MAKE_PF_CB(process_SM100wwParam2)); + register_telegram_type(0x07A5, "SM100wwCirc", true, MAKE_PF_CB(process_SM100wwCirc)); + register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); + register_telegram_type(0x07AE, "SM100wwKeepWarm", true, MAKE_PF_CB(process_SM100wwKeepWarm)); + register_telegram_type(0x07AD, "SM100ValveStatus", false, MAKE_PF_CB(process_SM100ValveStatus)); + register_telegram_type(0x07AB, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); + register_telegram_type(0x07D6, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); + register_telegram_type(0x07E0, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); + // 0x07C3 + } else if (tag == DeviceValueTAG::TAG_DHW4) { + register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); + register_telegram_type(0x07D7, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); + register_telegram_type(0x07E1, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); + register_telegram_type(0x07C3, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); + } // device values... register_device_value(tag, &wwTemp_, DeviceValueType::UINT16, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); register_device_value(tag, &wwTemp2_, DeviceValueType::UINT16, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwStorageTemp1), DeviceValueUOM::DEGREES); @@ -100,7 +108,7 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c } } -// SM100wwTemperature - 0x07D6 +// SM100wwTemperature - 0x07D6, dhw4: 0x07D7 // Solar Module(0x2A) -> (0x00), (0x7D6), data: 01 C1 00 00 02 5B 01 AF 01 AD 80 00 01 90 void Water::process_SM100wwTemperature(std::shared_ptr telegram) { has_update(telegram, wwTemp_, 0); // is *10 TS17 @@ -156,12 +164,10 @@ void Water::process_SM100ValveStatus(std::shared_ptr telegram) { has_update(telegram, wwRetValve_, 1); } -/* -// SM100ww? - 0x7E0, some kind of status +// SM100ww? - 0x7E0, some kind of status, dhw4: 0x7E1 // data: 00 00 46 00 00 01 06 0E 06 0E 00 00 00 00 00 03 03 03 03 // publishes single values offset 1/2(16bit), offset 5, offset 6, offset 7, offset 8, offset 9, // status2 = 03:"no heat", 06:"heat request", 08:"disinfecting", 09:"hold" -*/ void Water::process_SM100wwStatus2(std::shared_ptr telegram) { // has_update(telegram, wwFlow_, 7); // single byte, wrong see #1387 has_update(telegram, wwStatus2_, 8); @@ -170,6 +176,7 @@ void Water::process_SM100wwStatus2(std::shared_ptr telegram) { // SM100wwCommand - 0x07AB // Thermostat(0x10) -> Solar Module(0x2A), (0x7AB), data: 01 00 01 +// or dhw3 module (0x2A) -> dhw4 module(0x2B), (0x7C3), data: 01 01 00 void Water::process_SM100wwCommand(std::shared_ptr telegram) { // not implemented yet } @@ -268,7 +275,7 @@ bool Water::set_wwMaxTemp(const char * value, const int8_t id) { } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { write_command(0x313 + dhw_, 10, (uint8_t)temperature, 0x313 + dhw_); } else { // SM100 - write_command(0x7A6, 8, (uint8_t)temperature, 0x7A6); + write_command(0x7A6, 8, (uint8_t)temperature, 0x7A6); } return true; } diff --git a/src/emsesp_version.h b/src/emsesp_version.h index d13dd7e33..5077987b7 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.11" +#define EMSESP_APP_VERSION "3.8.2-dev.12" From bbc2de08a50567463bed75df3e7d116dc39152d7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 21 Mar 2026 09:52:04 +0100 Subject: [PATCH 081/162] support dhw5... --- src/devices/water.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/devices/water.cpp b/src/devices/water.cpp index d535504ac..22f198289 100644 --- a/src/devices/water.cpp +++ b/src/devices/water.cpp @@ -29,23 +29,20 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c dhw_ = device_id - EMSdevice::EMS_DEVICE_ID_DHW1; int8_t tag = DeviceValueTAG::TAG_DHW1 + dhw_; if (flags == EMSdevice::EMS_DEVICE_FLAG_SM100) { // device_id 0x2A, DHW3 + // telegram handlers + register_telegram_type(0x07D6 + dhw_ - 2, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); + register_telegram_type(0x07E0 + dhw_ - 2, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); + register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); // same telegram for all circuits if (tag == DeviceValueTAG::TAG_DHW3) { register_telegram_type(0x07AA, "SM100wwStatus", false, MAKE_PF_CB(process_SM100wwStatus)); register_telegram_type(0x07AC, "SM100wwParam1", false, MAKE_PF_CB(process_SM100wwParam2)); register_telegram_type(0x07A5, "SM100wwCirc", true, MAKE_PF_CB(process_SM100wwCirc)); - register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); register_telegram_type(0x07AE, "SM100wwKeepWarm", true, MAKE_PF_CB(process_SM100wwKeepWarm)); register_telegram_type(0x07AD, "SM100ValveStatus", false, MAKE_PF_CB(process_SM100ValveStatus)); - register_telegram_type(0x07AB, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); - register_telegram_type(0x07D6, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); - register_telegram_type(0x07E0, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); - // 0x07C3 + register_telegram_type(0x07AB, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); // command from thermostat } else if (tag == DeviceValueTAG::TAG_DHW4) { - register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); - register_telegram_type(0x07D7, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); - register_telegram_type(0x07E1, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); - register_telegram_type(0x07C3, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); + register_telegram_type(0x07C3, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); // command from dhw3->dhw4 } // device values... register_device_value(tag, &wwTemp_, DeviceValueType::UINT16, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); @@ -275,7 +272,7 @@ bool Water::set_wwMaxTemp(const char * value, const int8_t id) { } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { write_command(0x313 + dhw_, 10, (uint8_t)temperature, 0x313 + dhw_); } else { // SM100 - write_command(0x7A6, 8, (uint8_t)temperature, 0x7A6); + write_command(0x7A6, 8, (uint8_t)temperature, 0x7A6); } return true; } From fb09e10f1989d9635c6c827b636ba986ff1b1944 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 30 Mar 2026 23:26:04 +0200 Subject: [PATCH 082/162] sync with core3 features --- Makefile | 7 +- data/pre_load.json | 299 ++++++--- interface/package.json | 14 +- interface/pnpm-lock.yaml | 589 +++++++++--------- interface/src/app/main/Dashboard.tsx | 4 - interface/src/app/main/Devices.tsx | 14 +- interface/src/app/settings/DownloadUpload.tsx | 13 +- interface/src/app/status/SystemMonitor.tsx | 22 +- interface/src/i18n/cz/index.ts | 6 +- interface/src/i18n/de/index.ts | 6 +- interface/src/i18n/en/index.ts | 6 +- interface/src/i18n/fr/index.ts | 6 +- interface/src/i18n/it/index.ts | 6 +- interface/src/i18n/nl/index.ts | 6 +- interface/src/i18n/no/index.ts | 6 +- interface/src/i18n/pl/index.ts | 6 +- interface/src/i18n/sk/index.ts | 6 +- interface/src/i18n/sv/index.ts | 6 +- interface/src/i18n/tr/index.ts | 6 +- interface/src/utils/file.ts | 4 +- interface/src/utils/useInterval.ts | 2 +- interface/vite.config.ts | 40 +- lib/OneWire/OneWire.h | 2 - lib/esp32-psram/src/esp32-psram.h | 4 +- lib/esp32-psram/src/esp32-psram/HimemBlock.h | 5 + .../src/esp32-psram/RingBufferStream.h | 2 + .../src/esp32-psram/TypedRingBuffer.h | 2 + lib/esp32-psram/src/esp32-psram/VectorHIMEM.h | 7 +- lib/uuid-syslog/src/syslog.cpp | 2 +- lib_standalone/Arduino.cpp | 1 + lib_standalone/Arduino.h | 1 + lib_standalone/ArduinoJson.h | 39 +- mock-api/package.json | 4 +- mock-api/pnpm-lock.yaml | 50 +- mock-api/restServer.ts | 6 +- platformio.ini | 12 +- project-words.txt | 31 +- src/ESP32React/ArduinoJsonJWT.cpp | 19 +- src/ESP32React/UploadFileService.cpp | 15 +- src/core/ModuleLibrary.cpp | 31 + src/core/ModuleLibrary.h | 52 ++ src/core/analogsensor.cpp | 5 +- src/core/emsesp.cpp | 26 +- src/core/emsesp_common.h | 91 +++ src/core/helpers.h | 2 +- src/core/locale_common.h | 1 + src/core/locale_translations.h | 15 +- src/core/modbus.cpp | 2 +- src/core/mqtt.cpp | 3 +- src/core/system.cpp | 460 ++++++++++++-- src/core/system.h | 5 +- src/devices/thermostat.cpp | 4 + src/emsesp_version.h | 2 +- src/uart/emsuart_esp32.cpp | 9 + src/web/WebSettingsService.cpp | 2 + src/web/WebStatusService.cpp | 28 +- test/test_api/test_api.h | 162 ++--- 57 files changed, 1467 insertions(+), 709 deletions(-) create mode 100644 src/core/ModuleLibrary.cpp create mode 100644 src/core/ModuleLibrary.h create mode 100644 src/core/emsesp_common.h diff --git a/Makefile b/Makefile index c1ca05b90..ba1d304d8 100644 --- a/Makefile +++ b/Makefile @@ -63,8 +63,9 @@ CXX_STANDARD := -std=gnu++17 #---------------------------------------------------------------------- # Defined Symbols #---------------------------------------------------------------------- -DEFINES += -DARDUINOJSON_ENABLE -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0 +DEFINES += -DARDUINOJSON_ENABLE -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0 DEFINES += -DEMSESP_STANDALONE -DEMSESP_TEST -DEMSESP_DEBUG -DEMC_RX_BUFFER_SIZE=1500 +DEFINES += -DNO_TLS_SUPPORT DEFINES += $(ARGS) DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32S3\" @@ -79,6 +80,10 @@ SYMBOLS := $(CURDIR)/$(BUILD)/$(TARGET).out CSOURCES := $(shell find $(SOURCES) -name "*.c" 2>/dev/null) CXXSOURCES := $(shell find $(SOURCES) -name "*.cpp" 2>/dev/null) +# Exclude files not needed for standalone build, if they exist +CSOURCES := $(filter-out src/core/ModuleLibrary.c,$(CSOURCES)) +CXXSOURCES := $(filter-out src/core/ModuleLibrary.cpp,$(CXXSOURCES)) + OBJS := $(patsubst %,$(BUILD)/%.o,$(basename $(CSOURCES)) $(basename $(CXXSOURCES))) DEPS := $(patsubst %,$(BUILD)/%.d,$(basename $(CSOURCES)) $(basename $(CXXSOURCES))) diff --git a/data/pre_load.json b/data/pre_load.json index 9c0ad34cc..cd5fdd2c7 100644 --- a/data/pre_load.json +++ b/data/pre_load.json @@ -1,85 +1,228 @@ { - "type": "settings", - "Network": { - "ssid": "my_wifi_ssid", - "bssid": "", - "password": "my_wifi_password", - "hostname": "ems-esp" + "type": "systembackup", + "version": "3.8.2", + "date": "2026-03-29T13:28:15", + "systembackup": [ + { + "type": "settings", + "Network": { + "ssid": "", + "bssid": "", + "password": "", + "hostname": "ems-esp", + "static_ip_config": false, + "bandwidth20": false, + "nosleep": true, + "enableMDNS": true, + "enableCORS": false, + "CORSOrigin": "*", + "tx_power": 0 + }, + "AP": { + "provision_mode": 2, + "ssid": "ems-esp", + "password": "ems-esp-neo", + "channel": 1, + "ssid_hidden": false, + "max_clients": 4, + "local_ip": "192.168.4.1", + "gateway_ip": "192.168.4.1", + "subnet_mask": "255.255.255.0" + }, + "MQTT": { + "enableTLS": false, + "rootCA": "", + "enabled": false, + "host": "", + "port": 1883, + "base": "ems-esp", + "username": "", + "password": "", + "client_id": "esp32-b8ffc9ec", + "keep_alive": 60, + "clean_session": false, + "entity_format": 1, + "publish_time_boiler": 10, + "publish_time_thermostat": 10, + "publish_time_solar": 10, + "publish_time_mixer": 10, + "publish_time_water": 10, + "publish_time_other": 60, + "publish_time_sensor": 10, + "publish_time_heartbeat": 60, + "mqtt_qos": 0, + "mqtt_retain": false, + "ha_enabled": false, + "nested_format": 1, + "discovery_prefix": "homeassistant", + "discovery_type": 0, + "ha_number_mode": 0, + "publish_single": false, + "publish_single2cmd": false, + "send_response": false + }, + "NTP": { + "enabled": true, + "server": "time.google.com", + "tz_label": "Europe/Amsterdam", + "tz_format": "CET-1CEST,M3.5.0,M10.5.0/3" + }, + "Security": { + "jwt_secret": "ems-esp-neo", + "users": [ + { + "username": "admin", + "password": "admin", + "admin": true + }, + { + "username": "guest", + "password": "guest", + "admin": false + } + ] + }, + "Settings": { + "version": "3.8.2", + "board_profile": "E32V2_2", + "platform": "ESP32", + "locale": "en", + "tx_mode": 1, + "ems_bus_id": 11, + "syslog_enabled": false, + "syslog_level": 3, + "trace_raw": false, + "syslog_mark_interval": 0, + "syslog_host": "", + "syslog_port": 514, + "boiler_heatingoff": false, + "remote_timeout": 24, + "remote_timeout_en": false, + "shower_timer": false, + "shower_alert": false, + "shower_alert_coldshot": 10, + "shower_alert_trigger": 7, + "shower_min_duration": 180, + "rx_gpio": 4, + "tx_gpio": 5, + "dallas_gpio": 14, + "dallas_parasite": false, + "led_gpio": 32, + "hide_led": false, + "led_type": 1, + "low_clock": false, + "telnet_enabled": true, + "notoken_api": false, + "readonly_mode": false, + "analog_enabled": true, + "pbutton_gpio": 34, + "solar_maxflow": 30, + "fahrenheit": false, + "bool_format": 1, + "bool_dashboard": 1, + "enum_format": 1, + "weblog_level": 6, + "weblog_buffer": 50, + "weblog_compact": true, + "phy_type": 1, + "eth_power": 15, + "eth_phy_addr": 0, + "eth_clock_mode": 1, + "modbus_enabled": false, + "modbus_port": 502, + "modbus_max_clients": 10, + "modbus_timeout": 300, + "developer_mode": true, + "email_enabled": false, + "email_ssl": false, + "email_starttls": true, + "email_server": "smtp.example.net", + "email_port": 587, + "email_login": "", + "email_pass": "", + "email_sender": "ems-esp@example.net", + "email_recp": "", + "email_subject": "ems-esp notification" + } }, - "AP": { - "provision_mode": 2, - "ssid": "ems-esp", - "password": "ems-esp-neo", - "channel": 1, - "ssid_hidden": false, - "max_clients": 4, - "local_ip": "192.168.4.1", - "gateway_ip": "192.168.4.1", - "subnet_mask": "255.255.255.0" + { + "type": "schedule", + "Schedule": { + "schedule": [] + } }, - "MQTT": { - "enableTLS": false, - "rootCA": "", - "enabled": false, - "host": "127.0.0.1", - "port": 1883, - "base": "ems-esp", - "username": "username", - "password": "password", - "client_id": "ems-esp", - "entity_format": 1, - "publish_time_boiler": 10, - "publish_time_thermostat": 10, - "publish_time_solar": 10, - "publish_time_mixer": 10, - "publish_time_water": 10, - "publish_time_other": 60, - "publish_time_sensor": 10, - "publish_time_heartbeat": 60, - "mqtt_qos": 0, - "mqtt_retain": false, - "ha_enabled": false, - "nested_format": 1, - "discovery_prefix": "homeassistant", - "discovery_type": 0, - "publish_single": false, - "publish_single2cmd": false, - "send_response": false + { + "type": "customizations", + "Customizations": { + "ts": [ + { + "id": "28_1767_7B13_2502", + "name": "gateway_temperature", + "offset": 0, + "is_system": true + } + ], + "as": [ + { + "gpio": 39, + "name": "core_voltage", + "offset": 0, + "factor": 0.003771, + "uom": 23, + "type": 3, + "is_system": true + }, + { + "gpio": 36, + "name": "supply_voltage", + "offset": 0, + "factor": 0.017, + "uom": 23, + "type": 3, + "is_system": true + }, + { + "gpio": 2, + "name": "led", + "offset": 0, + "factor": 1, + "uom": 0, + "type": 6, + "is_system": true + } + ], + "masked_entities": [] + } }, - "NTP": { - "enabled": true, - "server": "time.google.com", - "tz_label": "Europe/Amsterdam", - "tz_format": "CET-1CEST,M3.5.0,M10.5.0/3" + { + "type": "entities", + "Entities": { + "entities": [] + } }, - "Security": { - "jwt_secret": "ems-esp-neo", - "users": [ - { - "username": "admin", - "password": "admin", - "admin": true - }, - { - "username": "guest", - "password": "guest", - "admin": false - } - ] + { + "type": "modules", + "Modules": { + "modules": [] + } }, - "Settings": { - "board_profile": "S3", - "locale": "en", - "tx_mode": 1, - "ems_bus_id": 11, - "boiler_heatingoff": false, - "hide_led": true, - "telnet_enabled": true, - "notoken_api": false, - "analog_enabled": true, - "fahrenheit": false, - "bool_format": 1, - "bool_dashboard": 1, - "enum_format": 1 + { + "type": "customSupport", + "Support": { + "html": [ + "This product is installed and managed by:", + "", + "Bosch Installer Example", + "", + "Nefit Road 12", + "1234 AB Amsterdam", + "Phone: +31 123 456 789", + "email: support@boschinstaller.nl", + "", + "For help and questions please contact your installer." + ], + "img_url": "https://emsesp.org/media/images/designer.png" + } } - } \ No newline at end of file + ] +} \ No newline at end of file diff --git a/interface/package.json b/interface/package.json index 76c9d28cf..04cd4a837 100644 --- a/interface/package.json +++ b/interface/package.json @@ -41,31 +41,31 @@ "react": "^19.2.4", "react-dom": "^19.2.4", "react-icons": "^5.6.0", - "react-router": "^7.13.1", + "react-router": "^7.13.2", "react-toastify": "^11.0.5", "typesafe-i18n": "^5.27.1", - "typescript": "^5.9.3" + "typescript": "^6.0.2" }, "devDependencies": { "@babel/core": "^7.29.0", "@eslint/js": "^10.0.1", "@preact/compat": "^18.3.2", - "@preact/preset-vite": "^2.10.4", + "@preact/preset-vite": "^2.10.5", "@trivago/prettier-plugin-sort-imports": "^6.0.2", "@types/node": "^25.5.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.1", "concurrently": "^9.2.1", - "eslint": "^10.0.3", + "eslint": "^10.1.0", "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.1", "rollup-plugin-visualizer": "^7.0.1", "terser": "^5.46.1", - "typescript-eslint": "^8.57.1", - "vite": "^7.3.1", + "typescript-eslint": "^8.58.0", + "vite": "^8.0.3", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, - "packageManager": "pnpm@10.32.1" + "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index a36b65459..03234af0b 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -63,27 +63,27 @@ importers: specifier: ^5.6.0 version: 5.6.0(react@19.2.4) react-router: - specifier: ^7.13.1 - version: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^7.13.2 + version: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-toastify: specifier: ^11.0.5 version: 11.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) typesafe-i18n: specifier: ^5.27.1 - version: 5.27.1(typescript@5.9.3) + version: 5.27.1(typescript@6.0.2) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.2 + version: 6.0.2 devDependencies: '@babel/core': specifier: ^7.29.0 version: 7.29.0 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.0.3) + version: 10.0.1(eslint@10.1.0) '@preact/preset-vite': - specifier: ^2.10.4 - version: 2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^2.10.5 + version: 2.10.5(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) @@ -103,32 +103,32 @@ importers: specifier: ^9.2.1 version: 9.2.1 eslint: - specifier: ^10.0.3 - version: 10.0.3 + specifier: ^10.1.0 + version: 10.1.0 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.0.3) + version: 10.1.8(eslint@10.1.0) prettier: specifier: ^3.8.1 version: 3.8.1 rollup-plugin-visualizer: specifier: ^7.0.1 - version: 7.0.1(rolldown@1.0.0-rc.9)(rollup@4.59.0) + version: 7.0.1(rolldown@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(rollup@4.59.0) terser: specifier: ^5.46.1 version: 5.46.1 typescript-eslint: - specifier: ^8.57.1 - version: 8.57.1(eslint@10.0.3)(typescript@5.9.3) + specifier: ^8.58.0 + version: 8.58.0(eslint@10.1.0)(typescript@6.0.2) vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + version: 0.6.1(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + version: 6.1.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) packages: @@ -627,8 +627,11 @@ packages: '@types/react': optional: true - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@napi-rs/wasm-runtime@1.1.2': + resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} @@ -646,8 +649,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.115.0': - resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} @@ -660,8 +663,8 @@ packages: peerDependencies: preact: '*' - '@preact/preset-vite@2.10.4': - resolution: {integrity: sha512-L7RQRs2GiG0lLUz7JSg07vU6lhlzdIthH0eqYZmRR70tTB9ikKCq2LHr+PZzhzIOco3Dioi6P6e/fjAmDUMJbQ==} + '@preact/preset-vite@2.10.5': + resolution: {integrity: sha512-p0vJpxiVO7KWWazWny3LUZ+saXyZKWv6Ju0bYMWNJRp2YveufRPgSUB1C4MTqGJfz07EehMgfN+AJNwQy+w6Iw==} peerDependencies: '@babel/core': 7.x vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x || 8.x @@ -683,103 +686,103 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' - '@rolldown/binding-android-arm64@1.0.0-rc.9': - resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.9': - resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.9': - resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.9': - resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': - resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': - resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': - resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': - resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': - resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': - resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': - resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.9': - resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -1033,63 +1036,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.57.1': - resolution: {integrity: sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.1 + '@typescript-eslint/parser': ^8.58.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.57.1': - resolution: {integrity: sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==} + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.57.1': - resolution: {integrity: sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==} + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.57.1': - resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} + '@typescript-eslint/scope-manager@8.58.0': + resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.1': - resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.57.1': - resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.57.1': - resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.1': - resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.57.1': - resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.57.1': - resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} + '@typescript-eslint/visitor-keys@8.58.0': + resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1181,8 +1184,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.9: - resolution: {integrity: sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==} + baseline-browser-mapping@2.10.12: + resolution: {integrity: sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1212,14 +1215,14 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@2.0.3: + resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} - brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} braces@3.0.3: @@ -1280,8 +1283,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001780: - resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==} + caniuse-lite@1.0.30001782: + resolution: {integrity: sha512-dZcaJLJeDMh4rELYFw1tvSn1bhZWYFOt468FcbHHxx/Z/dFidd1I6ciyFdi3iwfQCyOjqo9upF6lGQYtMiJWxw==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1516,8 +1519,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.321: - resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==} + electron-to-chromium@1.5.328: + resolution: {integrity: sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1710,8 +1713,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.3: - resolution: {integrity: sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==} + eslint@10.1.0: + resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1792,8 +1795,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-xml-parser@4.5.4: - resolution: {integrity: sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ==} + fast-xml-parser@4.5.5: + resolution: {integrity: sha512-cK9c5I/DwIOI7/Q7AlGN3DuTdwN61gwSfL8rvuVPK+0mcCNHHGxRrpiFtaZZRfRMJL3Gl8B2AFlBG6qXf03w9A==} hasBin: true fastq@1.20.1: @@ -2474,8 +2477,8 @@ packages: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} minimatch@3.1.5: @@ -2677,12 +2680,12 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} pify@2.3.0: @@ -2787,8 +2790,8 @@ packages: react-is@19.2.4: resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==} - react-router@7.13.1: - resolution: {integrity: sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==} + react-router@7.13.2: + resolution: {integrity: sha512-tX1Aee+ArlKQP+NIUd7SE6Li+CiGKwQtbS+FfRxPX6Pe4vHOo6nr9d++u5cwg+Z8K/x8tP+7qLmujDtfrAoUJA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -2874,8 +2877,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.9: - resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3203,15 +3206,15 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.57.1: - resolution: {integrity: sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==} + typescript-eslint@8.58.0: + resolution: {integrity: sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} hasBin: true @@ -3272,15 +3275,16 @@ packages: peerDependencies: vite: '*' - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@8.0.3: + resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -3291,12 +3295,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -3358,8 +3364,8 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} yargs-parser@21.1.1: @@ -3708,9 +3714,9 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0)': dependencies: - eslint: 10.0.3 + eslint: 10.1.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3719,7 +3725,7 @@ snapshots: dependencies: '@eslint/object-schema': 3.0.3 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color @@ -3731,9 +3737,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.0.3)': + '@eslint/js@10.0.1(eslint@10.1.0)': optionalDependencies: - eslint: 10.0.3 + eslint: 10.1.0 '@eslint/object-schema@3.0.3': {} @@ -3864,7 +3870,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@napi-rs/wasm-runtime@1.1.1': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': dependencies: '@emnapi/core': 1.9.1 '@emnapi/runtime': 1.9.1 @@ -3885,8 +3891,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.115.0': - optional: true + '@oxc-project/types@0.122.0': {} '@paralleldrive/cuid2@2.3.1': dependencies: @@ -3898,19 +3903,19 @@ snapshots: dependencies: preact: 10.29.0 - '@preact/preset-vite@2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1))': + '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) - vite-prerender-plugin: 0.5.13(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) + vite-prerender-plugin: 0.5.13(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -3925,7 +3930,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1))': + '@prefresh/vite@2.4.12(preact@10.29.0)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3933,70 +3938,72 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.0 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - '@rolldown/binding-android-arm64@1.0.0-rc.9': + '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.9': + '@rolldown/binding-darwin-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': optional: true - '@rolldown/pluginutils@1.0.0-rc.9': - optional: true + '@rolldown/pluginutils@1.0.0-rc.12': {} '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 2.3.2 '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.59.0 @@ -4151,7 +4158,7 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 '@types/node@25.5.0': dependencies: @@ -4181,95 +4188,95 @@ snapshots: dependencies: '@types/node': 25.5.0 - '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.1 - '@typescript-eslint/type-utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.1 - eslint: 10.0.3 + '@typescript-eslint/parser': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.0 + eslint: 10.1.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.1(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2)': dependencies: - '@typescript-eslint/scope-manager': 8.57.1 - '@typescript-eslint/types': 8.57.1 - '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.1 + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 - eslint: 10.0.3 - typescript: 5.9.3 + eslint: 10.1.0 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.58.0(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) - '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) + '@typescript-eslint/types': 8.58.0 debug: 4.4.3 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.1': + '@typescript-eslint/scope-manager@8.58.0': dependencies: - '@typescript-eslint/types': 8.57.1 - '@typescript-eslint/visitor-keys': 8.57.1 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 - '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@6.0.2)': dependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@typescript-eslint/type-utils@8.57.1(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.58.0(eslint@10.1.0)(typescript@6.0.2)': dependencies: - '@typescript-eslint/types': 8.57.1 - '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) debug: 4.4.3 - eslint: 10.0.3 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + eslint: 10.1.0 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.1': {} + '@typescript-eslint/types@8.58.0': {} - '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.58.0(typescript@6.0.2)': dependencies: - '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) - '@typescript-eslint/types': 8.57.1 - '@typescript-eslint/visitor-keys': 8.57.1 + '@typescript-eslint/project-service': 8.58.0(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.1(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/utils@8.58.0(eslint@10.1.0)(typescript@6.0.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@typescript-eslint/scope-manager': 8.57.1 - '@typescript-eslint/types': 8.57.1 - '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) - eslint: 10.0.3 - typescript: 5.9.3 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + eslint: 10.1.0 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.57.1': + '@typescript-eslint/visitor-keys@8.58.0': dependencies: - '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/types': 8.58.0 eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.16.0): @@ -4340,7 +4347,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.9: {} + baseline-browser-mapping@2.10.12: {} bin-build@3.0.0: dependencies: @@ -4382,16 +4389,16 @@ snapshots: boolbase@1.0.0: {} - brace-expansion@1.1.12: + brace-expansion@1.1.13: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@2.0.3: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.4: + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -4401,9 +4408,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.9 - caniuse-lite: 1.0.30001780 - electron-to-chromium: 1.5.321 + baseline-browser-mapping: 2.10.12 + caniuse-lite: 1.0.30001782 + electron-to-chromium: 1.5.328 node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4465,7 +4472,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001780: {} + caniuse-lite@1.0.30001782: {} caw@2.0.1: dependencies: @@ -4553,7 +4560,7 @@ snapshots: import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + yaml: 1.10.3 cross-spawn@5.1.0: dependencies: @@ -4680,8 +4687,7 @@ snapshots: define-lazy-prop@3.0.0: {} - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} dezalgo@1.0.4: dependencies: @@ -4768,7 +4774,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.321: {} + electron-to-chromium@1.5.328: {} emoji-regex@10.6.0: {} @@ -4906,6 +4912,7 @@ snapshots: '@esbuild/win32-arm64': 0.27.4 '@esbuild/win32-ia32': 0.27.4 '@esbuild/win32-x64': 0.27.4 + optional: true escalade@3.2.0: {} @@ -4913,9 +4920,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.0.3): + eslint-config-prettier@10.1.8(eslint@10.1.0): dependencies: - eslint: 10.0.3 + eslint: 10.1.0 eslint-scope@9.1.2: dependencies: @@ -4928,9 +4935,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.3: + eslint@10.1.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.3 '@eslint/config-helpers': 0.5.3 @@ -4957,7 +4964,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.4 + minimatch: 10.2.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -5064,7 +5071,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-xml-parser@4.5.4: + fast-xml-parser@4.5.5: dependencies: strnum: 1.1.2 @@ -5076,9 +5083,9 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 figures@1.7.0: dependencies: @@ -5477,7 +5484,7 @@ snapshots: is-svg@4.4.0: dependencies: - fast-xml-parser: 4.5.4 + fast-xml-parser: 4.5.5 is-typed-array@1.1.15: dependencies: @@ -5602,7 +5609,6 @@ snapshots: lightningcss-linux-x64-musl: 1.32.0 lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 - optional: true lines-and-columns@1.2.4: {} @@ -5696,7 +5702,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.54.0: {} @@ -5708,17 +5714,17 @@ snapshots: mimic-response@1.0.1: {} - minimatch@10.2.4: + minimatch@10.2.5: dependencies: - brace-expansion: 5.0.4 + brace-expansion: 5.0.5 minimatch@3.1.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 1.1.13 minimatch@9.0.9: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.0.3 minimist@1.2.8: {} @@ -5902,9 +5908,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} pify@2.3.0: {} @@ -5986,7 +5992,7 @@ snapshots: react-is@19.2.4: {} - react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: cookie: 1.1.1 react: 19.2.4 @@ -6075,36 +6081,38 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.9: + rolldown@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1): dependencies: - '@oxc-project/types': 0.115.0 - '@rolldown/pluginutils': 1.0.0-rc.9 + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.12 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.9 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 - '@rolldown/binding-darwin-x64': 1.0.0-rc.9 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 - optional: true + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.9)(rollup@4.59.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(rollup@4.59.0): dependencies: open: 11.0.0 - picomatch: 4.0.3 + picomatch: 4.0.4 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: - rolldown: 1.0.0-rc.9 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) rollup: 4.59.0 rollup@4.59.0: @@ -6137,6 +6145,7 @@ snapshots: '@rollup/rollup-win32-x64-gnu': 4.59.0 '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 + optional: true run-applescript@7.1.0: {} @@ -6360,8 +6369,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 to-buffer@1.2.2: dependencies: @@ -6381,13 +6390,13 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - ts-api-utils@2.5.0(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@6.0.2): dependencies: - typescript: 5.9.3 + typescript: 6.0.2 - tsconfck@3.1.6(typescript@5.9.3): + tsconfck@3.1.6(typescript@6.0.2): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 tslib@2.8.1: {} @@ -6407,22 +6416,22 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typesafe-i18n@5.27.1(typescript@5.9.3): + typesafe-i18n@5.27.1(typescript@6.0.2): dependencies: - typescript: 5.9.3 + typescript: 6.0.2 - typescript-eslint@8.57.1(eslint@10.0.3)(typescript@5.9.3): + typescript-eslint@8.58.0(eslint@10.1.0)(typescript@6.0.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.1(eslint@10.0.3)(typescript@5.9.3) - eslint: 10.0.3 - typescript: 5.9.3 + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + eslint: 10.1.0 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - typescript@5.9.3: {} + typescript@6.0.2: {} unbzip2-stream@1.4.3: dependencies: @@ -6462,7 +6471,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): + vite-plugin-imagemin@0.6.1(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6487,11 +6496,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): + vite-prerender-plugin@0.5.13(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6499,31 +6508,33 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): + vite-tsconfig-paths@6.1.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 - tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + tsconfck: 3.1.6(typescript@6.0.2) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1): + vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1): dependencies: - esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + lightningcss: 1.32.0 + picomatch: 4.0.4 postcss: 8.5.8 - rollup: 4.59.0 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.5.0 + esbuild: 0.27.4 fsevents: 2.3.3 - lightningcss: 1.32.0 terser: 5.46.1 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' which-typed-array@1.1.20: dependencies: @@ -6572,7 +6583,7 @@ snapshots: yallist@3.1.1: {} - yaml@1.10.2: {} + yaml@1.10.3: {} yargs-parser@21.1.1: {} diff --git a/interface/src/app/main/Dashboard.tsx b/interface/src/app/main/Dashboard.tsx index b02be0545..4f575c443 100644 --- a/interface/src/app/main/Dashboard.tsx +++ b/interface/src/app/main/Dashboard.tsx @@ -262,10 +262,6 @@ const Dashboard = memo(() => { return ( <> - {!data.connected && ( - - )} - {data.connected && data.nodes.length > 0 && !hasFavEntities && ( diff --git a/interface/src/app/main/Devices.tsx b/interface/src/app/main/Devices.tsx index f96adfb89..7e8802bb3 100644 --- a/interface/src/app/main/Devices.tsx +++ b/interface/src/app/main/Devices.tsx @@ -8,7 +8,7 @@ import { useState } from 'react'; import { IconContext } from 'react-icons'; -import { useNavigate } from 'react-router'; +import { Link, useNavigate } from 'react-router'; import { toast } from 'react-toastify'; import CommentsDisabledOutlinedIcon from '@mui/icons-material/CommentsDisabledOutlined'; @@ -534,7 +534,17 @@ const Devices = memo(() => { const renderCoreData = () => ( <> {!coreData.connected ? ( - + +  ( + + {LL.ONLINE_HELP()} + + ) + ) : ( { const downloadButtons: DownloadButton[] = useMemo( () => [ { - key: 'settings', type: 'settings', label: LL.SETTINGS_OF(LL.APPLICATION()), isGridButton: true }, { - key: 'customizations', type: 'customizations', label: LL.CUSTOMIZATIONS(), isGridButton: true }, { - key: 'entities', type: 'entities', label: LL.CUSTOM_ENTITIES(0), isGridButton: true }, { - key: 'schedule', type: 'schedule', label: LL.SCHEDULE(0), isGridButton: true }, { - key: 'allvalues', + type: 'systembackup', + label: LL.DOWNLOAD_SYSTEM_BACKUP(), + isGridButton: true + }, + { type: 'allvalues', label: LL.ALLVALUES(), isGridButton: false @@ -133,7 +132,7 @@ const DownloadUpload = () => { {gridButtons.map((button) => ( - + ) : ( - - + + {numChanges !== 0 && ( - + + {LL.HELP_INFORMATION_4()}. + + - + ©  { return ( <> - - {LL.MODULES_DESCRIPTION()}. - + + {LL.MODULES_DESCRIPTION()}. + { )}
- - + + {numChanges !== 0 && ( + + + + ), + [confirmBackup, handleCloseBackupDialog, LL] ); const handleDownload = useCallback( @@ -117,58 +128,57 @@ const DownloadUpload = () => { ); } - const gridButtons = downloadButtons.filter((btn) => btn.isGridButton); - const standaloneButton = downloadButtons.find((btn) => !btn.isGridButton); - return ( + {renderBackupDialog} + {LL.DOWNLOAD(0)} - - {LL.DOWNLOAD_SETTINGS_TEXT()}. - - - - {gridButtons.map((button) => ( - - - - ))} - - - - {LL.DOWNLOAD_SETTINGS_TEXT2()}. - - - {standaloneButton && ( + + + {LL.DOWNLOAD_SETTINGS_TEXT()}: + - )} + + + + + {LL.DOWNLOAD_SETTINGS_TEXT2()}: + + + {LL.UPLOAD()} - - {LL.UPLOAD_TEXT()}. - + + {LL.UPLOAD_TEXT()}: + - + ); }; diff --git a/interface/src/app/settings/MqttSettings.tsx b/interface/src/app/settings/MqttSettings.tsx index f910cadcd..a2ae1c236 100644 --- a/interface/src/app/settings/MqttSettings.tsx +++ b/interface/src/app/settings/MqttSettings.tsx @@ -129,7 +129,7 @@ const MqttSettings = () => { {blocker ? : null} <> - + { {timeZoneItems} - + {!data.enabled && !dirtyFlags.length && ( - + + {showUpgradeDialog && ( + setShowUpgradeDialog(false)} + > + + +    + {LL.UPGRADE_IMPORTANT_MESSAGES()} + + + {upgradeImportantMessageType === 1 && + LL.UPGRADE_IMPORTANT_MESSAGES_1()} + {upgradeImportantMessageType === 2 && + LL.UPGRADE_IMPORTANT_MESSAGES_2()} + + + + + + + )} )} diff --git a/interface/src/components/upload/SingleUpload.tsx b/interface/src/components/upload/SingleUpload.tsx index 5ad6941f2..0363cd445 100644 --- a/interface/src/components/upload/SingleUpload.tsx +++ b/interface/src/components/upload/SingleUpload.tsx @@ -13,11 +13,10 @@ import DragNdrop from './DragNdrop'; import { LinearProgressWithLabel } from './LinearProgressWithLabel'; interface SingleUploadProps { - text: string; doRestart: () => void; } -const SingleUpload = ({ text, doRestart }: SingleUploadProps) => { +const SingleUpload = ({ doRestart }: SingleUploadProps) => { const [md5, setMd5] = useState(); const [file, setFile] = useState(); const { LL } = useI18nContext(); @@ -58,7 +57,7 @@ const SingleUpload = ({ text, doRestart }: SingleUploadProps) => { <> {isUploading ? ( <> - + { ) : ( - + )} {md5 && ( - + {'MD5: ' + md5} )} diff --git a/interface/src/i18n/cz/index.ts b/interface/src/i18n/cz/index.ts index 2f0774454..082a44856 100644 --- a/interface/src/i18n/cz/index.ts +++ b/interface/src/i18n/cz/index.ts @@ -188,8 +188,12 @@ const cz: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Vytvořte zálohu svého nastavení a konfigurace', DOWNLOAD_SETTINGS_TEXT2: 'Exportovat všechny hodnoty', DOWNLOAD_SYSTEM_BACKUP: 'Systémová záloha', + WARNING_SYSTEM_BACKUP: 'Toto vytvoří zálohu vašich nastavení a konfigurace. Všechna hesla budou v zálohovém souboru čitelná. Opravdu chcete pokračovat?', UPLOAD_TEXT: 'Nahrajte nový soubor firmwaru (.bin) nebo záložní soubor (.json)', UPLOAD_DROP_TEXT: 'Přetáhněte soubor sem nebo klikněte pro výběr', + UPGRADE_IMPORTANT_MESSAGES: 'Důležité zprávy pro aktualizaci', + UPGRADE_IMPORTANT_MESSAGES_1: 'Aktualizujete se z hlavní verze. Vezměte prosím na vědomí, že to může způsobit problémy s vaší konfigurací.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Aktualizujete se z dílčí verze. Vezměte prosím na vědomí, že to může způsobit problémy s vaší konfigurací.', ERROR: 'Neočekávaná chyba, zkuste to prosím znovu', TIME_SET: 'Čas nastaven', MANAGE_USERS: 'Spravovat uživatele', diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 2411acaab..42c0e0896 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -188,8 +188,12 @@ const de: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Erstellen Sie eine Sicherung Ihrer Konfigurationen und Einstellungen', DOWNLOAD_SETTINGS_TEXT2: 'Exportiere alle Werte', DOWNLOAD_SYSTEM_BACKUP: 'System Sicherung', + WARNING_SYSTEM_BACKUP: 'Dies wird eine Sicherung Ihrer Konfigurationen und Einstellungen erstellen. Alle Passwörter werden im Sicherungsdatei lesbar. Möchten Sie fortfahren?', UPLOAD_TEXT: 'Laden Sie eine neue Firmware-Datei (.bin) oder eine Sicherungsdatei (.json) hoch', UPLOAD_DROP_TEXT: 'Legen Sie eine Firmware-Datei (.bin) ab oder klicken Sie hier', + UPGRADE_IMPORTANT_MESSAGES: 'Wichtige Nachrichten für das Upgrade', + UPGRADE_IMPORTANT_MESSAGES_1: 'Sie sind von einer Major-Version auf eine neue Version aktualisiert. Bitte beachten Sie, dass dies zu Problemen mit Ihrer Konfiguration führen kann.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Sie sind von einer Minor-Version auf eine neue Version aktualisiert. Bitte beachten Sie, dass dies zu Problemen mit Ihrer Konfiguration führen kann.', ERROR: 'Unerwarteter Fehler, bitte versuchen Sie es erneut.', TIME_SET: 'Zeit gesetzt', MANAGE_USERS: 'Nutzerverwaltung', diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index 6549cee7a..99ecd72c9 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -188,8 +188,12 @@ const en: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Create a backup of your configuration and settings', DOWNLOAD_SETTINGS_TEXT2: 'Export all values', DOWNLOAD_SYSTEM_BACKUP: 'System Backup', + WARNING_SYSTEM_BACKUP: 'This will create a backup of your configuration and settings. All passwords will be readable in the backup file. Do you want to continue?', UPLOAD_TEXT: 'Upload a new firmware file (.bin) or a backup file (.json)', UPLOAD_DROP_TEXT: 'Drop a firmware .bin file or click here', + UPGRADE_IMPORTANT_MESSAGES: 'Upgrade Important Messages', + UPGRADE_IMPORTANT_MESSAGES_1: 'You are upgrading from a major version. Please be aware that this may cause issues with your configuration.', + UPGRADE_IMPORTANT_MESSAGES_2: 'You are upgrading from a minor version. Please be aware that this may cause issues with your configuration.', ERROR: 'Unexpected Error, please try again', TIME_SET: 'Time set', MANAGE_USERS: 'Manage Users', diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index 261ef5ac9..dd2918029 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -188,8 +188,12 @@ const fr: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Créer une sauvegarde de vos paramètres et configurations', DOWNLOAD_SETTINGS_TEXT2: 'Exporter toutes les valeurs', DOWNLOAD_SYSTEM_BACKUP: 'Sauvegarde système', + WARNING_SYSTEM_BACKUP: 'Cela créera une sauvegarde de vos paramètres et configurations. Tous les mots de passe seront lisibles dans le fichier de sauvegarde. Voulez-vous continuer ?', UPLOAD_TEXT: 'Télécharger un nouveau fichier firmware (.bin) ou une sauvegarde (.json)', UPLOAD_DROP_TEXT: 'Drop a firmware .bin file or click here', + UPGRADE_IMPORTANT_MESSAGES: 'Messages importants pour la mise à jour', + UPGRADE_IMPORTANT_MESSAGES_1: 'Vous mettez à jour à partir d\'une version majeure. Veuillez prendre en compte que cela peut causer des problèmes avec votre configuration.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Vous mettez à jour à partir d\'une version mineure. Veuillez prendre en compte que cela peut causer des problèmes avec votre configuration.', ERROR: 'Erreur inattendue, veuillez réessayer', TIME_SET: 'Time set', MANAGE_USERS: 'Gérer les utilisateurs', diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index 042415c95..66dd21eaf 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -188,8 +188,12 @@ const it: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Create a backup of your configuration and settings', DOWNLOAD_SETTINGS_TEXT2: 'Esporta tutti i valori', DOWNLOAD_SYSTEM_BACKUP: 'Backup sistema', + WARNING_SYSTEM_BACKUP: 'Questo creerà un backup delle tue configurazioni e impostazioni. Tutte le password saranno leggibili nel file di backup. Vuoi continuare?', UPLOAD_TEXT: 'Upload a new firmware file (.bin) or a backup file (.json)', UPLOAD_DROP_TEXT: 'Drop a firmware .bin file or click here', + UPGRADE_IMPORTANT_MESSAGES: 'Messaggi importanti per l\'aggiornamento', + UPGRADE_IMPORTANT_MESSAGES_1: 'Stai aggiornando da una versione principale. Si prega di essere consapevoli che questo può causare problemi con la tua configurazione.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Stai aggiornando da una versione secondaria. Si prega di essere consapevoli che questo può causare problemi con la tua configurazione.', ERROR: 'Errore Inaspettato, prego tenta ancora', TIME_SET: 'Imposta Ora', MANAGE_USERS: 'Gestione Utenti', diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index 308c21075..7d48ea15e 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -188,8 +188,12 @@ const nl: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Maak een back-up van uw configuratie en instellingen', DOWNLOAD_SETTINGS_TEXT2: 'Exporteer alle waarden', DOWNLOAD_SYSTEM_BACKUP: 'Systeem Backup', + WARNING_SYSTEM_BACKUP: 'Dit zal een backup maken van uw configuratie en instellingen. Alle wachtwoorden zullen leesbaar zijn in het backup bestand. Weet je zeker dat je wilt doorgaan?', UPLOAD_TEXT: 'Upload een nieuw firmwarebestand (.bin) of een back-upbestand (.json)', UPLOAD_DROP_TEXT: 'Sleep en firmware .bin bestand hierheen of klik hier', + UPGRADE_IMPORTANT_MESSAGES: 'Belangrijke berichten voor upgrade', + UPGRADE_IMPORTANT_MESSAGES_1: 'U updatet van een grote versie. Wees bewust dat dit problemen met uw configuratie kan veroorzaken.', + UPGRADE_IMPORTANT_MESSAGES_2: 'U updatet van een kleine versie. Wees bewust dat dit problemen met uw configuratie kan veroorzaken.', ERROR: 'Onverwachte fout, probeer opnieuw', TIME_SET: 'Tijd ingesteld', MANAGE_USERS: 'Gebruikersbeheer', diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index 5afd33c4e..52f5b60ae 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -188,8 +188,12 @@ const no: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Lag en sikkerhetskopi av dine konfigurasjon og innstillinger', DOWNLOAD_SETTINGS_TEXT2: 'Eksporter alle verdier', DOWNLOAD_SYSTEM_BACKUP: 'System Sikkerhetskopi', + WARNING_SYSTEM_BACKUP: 'Dette vil lage en sikkerhetskopi av dine konfigurasjon og innstillinger. Alle passord vil være lesbare i sikkerhetskopien. Er du sikker på at du vil fortsette?', UPLOAD_TEXT: 'Last opp en ny firmware fil (.bin) eller en sikkerhetskopi fil (.json)', UPLOAD_DROP_TEXT: 'Dropp en firmware fil (.bin) eller klikk her', + UPGRADE_IMPORTANT_MESSAGES: 'Viktige meldinger for oppgradering', + UPGRADE_IMPORTANT_MESSAGES_1: 'Du oppgraderer fra en stor versjon. Vær oppmerksom på at dette kan føre til problemer med din konfigurasjon.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Du oppgraderer fra en liten versjon. Vær oppmerksom på at dette kan føre til problemer med din konfigurasjon.', ERROR: 'Ukjent feil, prøv igjen', TIME_SET: 'Still in tid', MANAGE_USERS: 'Administrer Brukere', diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 9ba19d73c..52f6a1cc8 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -188,8 +188,12 @@ const pl: BaseTranslation = { DOWNLOAD_SETTINGS_TEXT: 'Utwórz kopię swoich ustawień i konfiguracji', DOWNLOAD_SETTINGS_TEXT2: 'Eksportuj wszystkie wartości', DOWNLOAD_SYSTEM_BACKUP: 'Kopia zapasowa systemu', + WARNING_SYSTEM_BACKUP: 'To utworzy kopię swoich ustawień i konfiguracji. Wszystkie hasła będą widoczne w kopii zapasowej. Czy na pewno chcesz kontynuować?', UPLOAD_TEXT: 'Wgraj nowy plik firmware (.bin) lub kopię ustawień (.json)', UPLOAD_DROP_TEXT: 'Upuść plik firmware .bin lub kliknij tutaj', + UPGRADE_IMPORTANT_MESSAGES: 'Ważne informacje dotyczące aktualizacji', + UPGRADE_IMPORTANT_MESSAGES_1: 'Aktualizujesz się z głównej wersji. Proszę mieć świadomość, że to może spowodować problemy z konfiguracją.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Aktualizujesz się z drugorzędnej wersji. Proszę mieć świadomość, że to może spowodować problemy z konfiguracją.', ERROR: 'Nieoczekiwany błąd, spróbuj ponownie!', TIME_SET: 'Zegar został ustawiony.', MANAGE_USERS: 'Zarządzanie użytkownikami', diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index 56aa89dfe..6b4a178d0 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -188,8 +188,12 @@ const sk: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Vytvorte zálohu svojej konfigurácie a nastavení', DOWNLOAD_SETTINGS_TEXT2: 'Exportovať všetky hodnoty', DOWNLOAD_SYSTEM_BACKUP: 'Systémová záloha', + WARNING_SYSTEM_BACKUP: 'Toto vytvorí zálohu vašich nastavení a konfigurácií. Všetky hesla budú v zálohovom súbore čitateľné. Naozaj chcete pokračovať?', UPLOAD_TEXT: 'Nahrajte nový súbor firmvéru (.bin) alebo súbor zálohy (.json)', UPLOAD_DROP_TEXT: 'Presuňte súbor .bin firmvéru alebo kliknite sem', + UPGRADE_IMPORTANT_MESSAGES: 'Dôležité informácie pre aktualizáciu', + UPGRADE_IMPORTANT_MESSAGES_1: 'Aktualizujete sa z hlavného verzie. Prosím, buďte si vedomí, že to môže spôsobiť problémy s vašou konfiguráciou.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Aktualizujete sa z menšieho verzie. Prosím, buďte si vedomí, že to môže spôsobiť problémy s vašou konfiguráciou.', ERROR: 'Neočakávaná chyba, prosím skúste to znova', TIME_SET: 'Nastavený čas', MANAGE_USERS: 'Správa používateľov', diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index 4641ce56a..a135eaf93 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -188,8 +188,12 @@ const sv: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Skapa en säkerhetskopia av din konfiguration och inställningar', DOWNLOAD_SETTINGS_TEXT2: 'Exportera alla värden', DOWNLOAD_SYSTEM_BACKUP: 'System säkerhetskopia', + WARNING_SYSTEM_BACKUP: 'Detta kommer att skapa en säkerhetskopia av dina inställningar och konfiguration. Alla lösenord kommer att vara läsbara i säkerhetskopian. Är du säker på att du vill fortsätta?', UPLOAD_TEXT: 'Ladda upp en ny firmwarefil (.bin) eller en säkerhetskopiafil (.json)', UPLOAD_DROP_TEXT: 'Droppa en firmware .bin fil eller klicka här', + UPGRADE_IMPORTANT_MESSAGES: 'Viktiga meddelanden för uppgradering', + UPGRADE_IMPORTANT_MESSAGES_1: 'Du uppgraderar från en major version. Vänligen var medveten om att detta kan orsaka problem med din konfiguration.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Du uppgraderar från en minor version. Vänligen var medveten om att detta kan orsaka problem med din konfiguration.', ERROR: 'Okänt fel, var god försök igen', TIME_SET: 'Ställ in tid', MANAGE_USERS: 'Användare', diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index 29c7450b8..9fca8f301 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -188,8 +188,12 @@ const tr: Translation = { DOWNLOAD_SETTINGS_TEXT: 'Yapılandırma ve ayarlarınızın yedekleme yapın', DOWNLOAD_SETTINGS_TEXT2: 'Tüm değerleri dışarı al', DOWNLOAD_SYSTEM_BACKUP: 'Sistem yedekleme', + WARNING_SYSTEM_BACKUP: 'Bu, yapılandırma ve ayarlarınızın bir yedeklemesi oluşturacaktır. Tüm şifreler yedekleme dosyasında okunabilir olacaktır. Devam etmek istediğinize emin misiniz?', UPLOAD_TEXT: 'Yeni bir firmware dosyası (.bin) veya yedek dosyası (.json) yükle', UPLOAD_DROP_TEXT: 'Bir firmware .bin dosyası veya buraya tıklayın', + UPGRADE_IMPORTANT_MESSAGES: 'Yükseltme Önemli Mesajları', + UPGRADE_IMPORTANT_MESSAGES_1: 'Bir ana sürümden yükselteysiniz. Lütfen bu, yapılandırmanızın sorunlarına neden olabileceğini unutmayın.', + UPGRADE_IMPORTANT_MESSAGES_2: 'Bir küçük sürümden yükselteysiniz. Lütfen bu, yapılandırmanızın sorunlarına neden olabileceğini unutmayın.', ERROR: 'Beklenemedik hata, lütfen tekrar deneyin.', TIME_SET: 'Zaman ayarı', MANAGE_USERS: 'Kullanıcıları yönet', diff --git a/mock-api/package.json b/mock-api/package.json index d5681fd0a..6a4c24689 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -13,7 +13,7 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "formidable": "^3.5.4", "itty-router": "^5.0.23", - "prettier": "^3.8.1" + "prettier": "^3.8.2" }, "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index 21e29fa74..1ddfbaab7 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 3.1.3 '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.8.1) + version: 6.0.2(prettier@3.8.2) formidable: specifier: ^3.5.4 version: 3.5.4 @@ -21,8 +21,8 @@ importers: specifier: ^5.0.23 version: 5.0.23 prettier: - specifier: ^3.8.1 - version: 3.8.1 + specifier: ^3.8.2 + version: 3.8.2 packages: @@ -112,8 +112,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - brace-expansion@2.0.3: - resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -145,8 +145,8 @@ packages: engines: {node: '>=6'} hasBin: true - lodash-es@4.17.23: - resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} @@ -167,8 +167,8 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} + prettier@3.8.2: + resolution: {integrity: sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==} engines: {node: '>=14'} hasBin: true @@ -246,17 +246,17 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.2)': dependencies: '@babel/generator': 7.29.1 '@babel/parser': 7.29.2 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 - lodash-es: 4.17.23 + lodash-es: 4.18.1 minimatch: 9.0.9 parse-imports-exports: 0.2.4 - prettier: 3.8.1 + prettier: 3.8.2 transitivePeerDependencies: - supports-color @@ -264,7 +264,7 @@ snapshots: balanced-match@1.0.2: {} - brace-expansion@2.0.3: + brace-expansion@2.1.0: dependencies: balanced-match: 1.0.2 @@ -291,11 +291,11 @@ snapshots: jsesc@3.1.0: {} - lodash-es@4.17.23: {} + lodash-es@4.18.1: {} minimatch@9.0.9: dependencies: - brace-expansion: 2.0.3 + brace-expansion: 2.1.0 ms@2.1.3: {} @@ -311,6 +311,6 @@ snapshots: picocolors@1.1.1: {} - prettier@3.8.1: {} + prettier@3.8.2: {} wrappy@1.0.2: {} diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts index fe079638d..554f68426 100644 --- a/mock-api/restServer.ts +++ b/mock-api/restServer.ts @@ -5170,6 +5170,32 @@ router // set partition console.log('setting partition to', content.param); return status(200); + } else if (action === 'upgradeImportantMessages') { + // check upgrade important messages + console.log( + 'checking upgrade important messages for version ', + content.param + ); + // determine message based on if we're upgrading a minor or major version + // TODO finish this + let message = 0; + const version = content.param; + const majorVersion = version.split('.')[0]; + const minorVersion = version.split('.')[1]; + const currentMajorVersion = THIS_VERSION.split('.')[0]; + const currentMinorVersion = THIS_VERSION.split('.')[1]; + if (majorVersion > currentMajorVersion) { + message = 1; + } else if (majorVersion < currentMajorVersion) { + message = 2; + } else if (minorVersion > currentMinorVersion) { + message = 1; + } else if (minorVersion < currentMinorVersion) { + message = 2; + } else { + message = 0; + } + return message; } } return status(404); // cmd not found diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index e5e1225e1..3978d6e91 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -216,6 +216,8 @@ void WebStatusService::action(AsyncWebServerRequest * request, JsonVariant json) } else if (action == "resetMQTT" && is_admin) { EMSESP::mqtt_.reset_mqtt(); ok = true; + } else if (action == "upgradeImportantMessages") { + ok = upgradeImportantMessages(param.c_str()); } #if defined(EMSESP_STANDALONE) && !defined(EMSESP_UNITY) @@ -237,6 +239,20 @@ void WebStatusService::action(AsyncWebServerRequest * request, JsonVariant json) request->send(response); } +// action = upgradeImportantMessages +// returns the type of upgrade important message to show\ +// 0 = no message +// 1 = major version upgrade +// 2 = minor version upgrade +// TODO finish this +bool WebStatusService::upgradeImportantMessages(const char * version) { + version::Semver200_version current_version(current_version_s); + version::Semver200_version latest_version(version); + if (latest_version > current_version) { + return 1; + } +} + // action = checkUpgrade // versions holds the latest development version and stable version in one string, comma separated bool WebStatusService::checkUpgrade(JsonObject root, std::string & versions) { diff --git a/src/web/WebStatusService.h b/src/web/WebStatusService.h index 0d38a5b73..7dd7e28f8 100644 --- a/src/web/WebStatusService.h +++ b/src/web/WebStatusService.h @@ -36,6 +36,7 @@ class WebStatusService { bool uploadURL(const char * url); bool setSystemStatus(const char * status); void allvalues(JsonObject output); + bool upgradeImportantMessages(const char * version); std::string current_version_s = EMSESP_APP_VERSION; }; From 97cd6573368a730c91026c5daeb60e1ce551d7e8 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 14 Apr 2026 09:31:05 +0200 Subject: [PATCH 094/162] fix links --- interface/src/app/main/Help.tsx | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/interface/src/app/main/Help.tsx b/interface/src/app/main/Help.tsx index 16cb09c21..d68ffa591 100644 --- a/interface/src/app/main/Help.tsx +++ b/interface/src/app/main/Help.tsx @@ -11,6 +11,7 @@ import { Box, Button, Divider, + Grid, Link, List, ListItem, @@ -42,7 +43,7 @@ interface CustomSupport { html: string | null; } -const DEFAULT_IMAGE_URL = 'https://emsesp.org/_media/images/installer.jpeg'; +const DEFAULT_IMAGE_URL = 'https://emsesp.org/media/images/installer.jpeg'; const SUPPORT_BOX_STYLES: SxProps = { borderRadius: 3, @@ -182,17 +183,19 @@ const HelpComponent = () => {
)} - - {LL.HELP_INFORMATION_4()}. - - + + + {LL.HELP_INFORMATION_4()}: + + + From 3317aa845aefbb3281e04022c8012ede8da5492c Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 14 Apr 2026 09:31:19 +0200 Subject: [PATCH 095/162] package update --- interface/pnpm-lock.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 11eff743d..bbee8b712 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -1283,8 +1283,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001787: - resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==} + caniuse-lite@1.0.30001788: + resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1519,8 +1519,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.335: - resolution: {integrity: sha512-q9n5T4BR4Xwa2cwbrwcsDJtHD/enpQ5S1xF1IAtdqf5AAgqDFmR/aakqH3ChFdqd/QXJhS3rnnXFtexU7rax6Q==} + electron-to-chromium@1.5.336: + resolution: {integrity: sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -4408,8 +4408,8 @@ snapshots: browserslist@4.28.2: dependencies: baseline-browser-mapping: 2.10.18 - caniuse-lite: 1.0.30001787 - electron-to-chromium: 1.5.335 + caniuse-lite: 1.0.30001788 + electron-to-chromium: 1.5.336 node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4471,7 +4471,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001787: {} + caniuse-lite@1.0.30001788: {} caw@2.0.1: dependencies: @@ -4773,7 +4773,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.335: {} + electron-to-chromium@1.5.336: {} emoji-regex@10.6.0: {} From 99c5e2230c5d89a4a2f5d7294b534ef8ceb35b18 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 14 Apr 2026 09:31:35 +0200 Subject: [PATCH 096/162] fix link --- test/test_data/custom_support.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_data/custom_support.json b/test/test_data/custom_support.json index b528645a3..6d5b81502 100644 --- a/test/test_data/custom_support.json +++ b/test/test_data/custom_support.json @@ -13,6 +13,6 @@ "", "For help and questions please contact your installer." ], - "img_url": "https://emsesp.org/_media/images/designer.png" + "img_url": "https://emsesp.org/media/images/designer.png" } } \ No newline at end of file From 111145886379e790fd1b4200643fd9f6916c837a Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 14 Apr 2026 09:31:50 +0200 Subject: [PATCH 097/162] upgrade message warnings --- interface/src/components/upload/DragNdrop.tsx | 15 ++-- interface/src/i18n/cz/index.ts | 9 +- interface/src/i18n/de/index.ts | 9 +- interface/src/i18n/en/index.ts | 9 +- interface/src/i18n/fr/index.ts | 9 +- interface/src/i18n/it/index.ts | 9 +- interface/src/i18n/nl/index.ts | 3 - interface/src/i18n/no/index.ts | 9 +- interface/src/i18n/pl/index.ts | 9 +- interface/src/i18n/sk/index.ts | 9 +- interface/src/i18n/sv/index.ts | 9 +- interface/src/i18n/tr/index.ts | 9 +- mock-api/restServer.ts | 25 ++---- src/web/WebStatusService.cpp | 82 +++++++++++++++---- src/web/WebStatusService.h | 2 +- 15 files changed, 132 insertions(+), 85 deletions(-) diff --git a/interface/src/components/upload/DragNdrop.tsx b/interface/src/components/upload/DragNdrop.tsx index e0214b1bf..0f6feedf8 100644 --- a/interface/src/components/upload/DragNdrop.tsx +++ b/interface/src/components/upload/DragNdrop.tsx @@ -78,16 +78,19 @@ const DragNdrop = ({ text, onFileSelected }: DragNdropProps) => { useState(0); const { send: checkUpgradeImportantMessages } = useRequest( - (type: string) => - callAction({ action: 'upgradeImportantMessages', param: type }), + (version: string) => + callAction({ action: 'upgradeImportantMessages', param: version }), { immediate: false } ) - .onSuccess((event: { data: number }) => { - setUpgradeImportantMessageType(event.data); + .onSuccess((event) => { + setUpgradeImportantMessageType( + (event.data as { upgradeImportantMessageType: number }) + .upgradeImportantMessageType + ); }) - .onError((error: { error?: { message?: string } }) => { + .onError((error) => { toast.error(String(error.error?.message || 'An error occurred')); }); @@ -189,7 +192,7 @@ const DragNdrop = ({ text, onFileSelected }: DragNdropProps) => { {LL.UPLOAD()} - {showUpgradeDialog && ( + {showUpgradeDialog && upgradeImportantMessageType > 0 && ( contact your installer." ], - img_url: 'https://emsesp.org/_media/images/designer.png' + img_url: 'https://emsesp.org/media/images/designer.png' // img_url: 'https://picsum.photos/200/300' } }; @@ -5173,29 +5173,16 @@ router } else if (action === 'upgradeImportantMessages') { // check upgrade important messages console.log( - 'checking upgrade important messages for version ', + 'checking upgrade important messages for version', content.param ); // determine message based on if we're upgrading a minor or major version // TODO finish this - let message = 0; const version = content.param; - const majorVersion = version.split('.')[0]; - const minorVersion = version.split('.')[1]; - const currentMajorVersion = THIS_VERSION.split('.')[0]; - const currentMinorVersion = THIS_VERSION.split('.')[1]; - if (majorVersion > currentMajorVersion) { - message = 1; - } else if (majorVersion < currentMajorVersion) { - message = 2; - } else if (minorVersion > currentMinorVersion) { - message = 1; - } else if (minorVersion < currentMinorVersion) { - message = 2; - } else { - message = 0; - } - return message; + const data = { + upgradeImportantMessageType: 1 + }; + return data; } } return status(404); // cmd not found diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index 3978d6e91..81f548b20 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -217,7 +217,7 @@ void WebStatusService::action(AsyncWebServerRequest * request, JsonVariant json) EMSESP::mqtt_.reset_mqtt(); ok = true; } else if (action == "upgradeImportantMessages") { - ok = upgradeImportantMessages(param.c_str()); + ok = upgradeImportantMessages(root, param); } #if defined(EMSESP_STANDALONE) && !defined(EMSESP_UNITY) @@ -240,26 +240,76 @@ void WebStatusService::action(AsyncWebServerRequest * request, JsonVariant json) } // action = upgradeImportantMessages -// returns the type of upgrade important message to show\ -// 0 = no message -// 1 = major version upgrade -// 2 = minor version upgrade -// TODO finish this -bool WebStatusService::upgradeImportantMessages(const char * version) { - version::Semver200_version current_version(current_version_s); - version::Semver200_version latest_version(version); - if (latest_version > current_version) { - return 1; +// returns the type of upgrade important message to display in the UI +// 0 = no message (if just a minor version upgrade) +// 1 = going from <= 3.8 to 3.9 (new partition layout) +// 2 = major version upgrade +// version can be like 3.8.2 or a filename like EMS-ESP-3_8_2-dev_13-ESP32-16MB+.bin +bool WebStatusService::upgradeImportantMessages(JsonObject root, std::string & version) { + if (version.empty()) { + return false; } + + uint8_t upgradeImportantMessageType = 0; + + // it's a filename with a .bin extension, try and extract the version from it + version::Semver200_version latest_version; + if (version.find(".bin") != std::string::npos) { + // e.g. EMS-ESP-3_8_2-dev_13-ESP32-16MB+.bin -> major=3 minor=8 patch=2 + std::string filename = version; + auto pos = filename.find("EMS-ESP-"); + if (pos == std::string::npos) { + EMSESP::logger().err("Invalid version string: %s", version.c_str()); + return false; + } + pos += 8; // skip past "EMS-ESP-" + auto underscore1 = filename.find('_', pos); + auto underscore2 = filename.find('_', underscore1 + 1); + auto dash = filename.find('-', underscore2 + 1); + if (underscore1 == std::string::npos || underscore2 == std::string::npos || dash == std::string::npos) { + EMSESP::logger().err("Invalid version string: %s", version.c_str()); + return false; + } + std::string major_version = filename.substr(pos, underscore1 - pos); + std::string minor_version = filename.substr(underscore1 + 1, underscore2 - underscore1 - 1); + std::string patch_version = filename.substr(underscore2 + 1, dash - underscore2 - 1); + latest_version = version::Semver200_version(major_version + "." + minor_version + "." + patch_version); + } else { + latest_version = version::Semver200_version(version); + } + + // check if it's a valid version string + if (!latest_version.major()) { + EMSESP::logger().err("Invalid version string: %s", version.c_str()); + return false; + } + + version::Semver200_version current_version(current_version_s); // get current version + + if (current_version.major() <= 3 && current_version.minor() <= 8) { + upgradeImportantMessageType = 1; // if moving from below 3.8.x to 3.9.x return 1 + } else if (latest_version > current_version && current_version.minor() < latest_version.minor()) { + upgradeImportantMessageType = 0; // if it's just a minor version upgrade return 0 + } else if (latest_version > current_version && current_version.major() < latest_version.major()) { + upgradeImportantMessageType = 2; // if it's a major version upgrade return 2 + } + + // #if defined(EMSESP_DEBUG) + // EMSESP::logger().debug("upgradeImportantMessageType: %s %d", version.c_str(), upgradeImportantMessageType); + // #endif + + root["upgradeImportantMessageType"] = upgradeImportantMessageType; + + return true; } // action = checkUpgrade // versions holds the latest development version and stable version in one string, comma separated -bool WebStatusService::checkUpgrade(JsonObject root, std::string & versions) { - if (!versions.empty()) { +bool WebStatusService::checkUpgrade(JsonObject root, std::string & version) { + if (!version.empty()) { version::Semver200_version current_version(current_version_s); - version::Semver200_version latest_dev_version(versions.substr(0, versions.find(','))); - version::Semver200_version latest_stable_version(versions.substr(versions.find(',') + 1)); + version::Semver200_version latest_dev_version(version.substr(0, version.find(','))); + version::Semver200_version latest_stable_version(version.substr(version.find(',') + 1)); bool dev_upgradeable = latest_dev_version > current_version; bool stable_upgradeable = latest_stable_version > current_version; @@ -358,7 +408,7 @@ bool WebStatusService::getCustomSupport(JsonObject root) { #if defined(EMSESP_STANDALONE) // dummy test data for "test api3" - deserializeJson(doc, "{\"type\":\"customSupport\",\"Support\":{\"html\":[\"html code\",\"here\"], \"img_url\": \"https://emsesp.org/_media/images/designer.png\"}"); + deserializeJson(doc, "{\"type\":\"customSupport\",\"Support\":{\"html\":[\"html code\",\"here\"], \"img_url\": \"https://emsesp.org/media/images/designer.png\"}"); #else // check if we have custom support file uploaded File file = LittleFS.open(EMSESP_CUSTOMSUPPORT_FILE, "r"); diff --git a/src/web/WebStatusService.h b/src/web/WebStatusService.h index 7dd7e28f8..ff495d44a 100644 --- a/src/web/WebStatusService.h +++ b/src/web/WebStatusService.h @@ -36,7 +36,7 @@ class WebStatusService { bool uploadURL(const char * url); bool setSystemStatus(const char * status); void allvalues(JsonObject output); - bool upgradeImportantMessages(const char * version); + bool upgradeImportantMessages(JsonObject root, std::string & version); std::string current_version_s = EMSESP_APP_VERSION; }; From 3ac807bdd569da9a3e0b2280ca803446256ef70d Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 14 Apr 2026 21:08:04 +0200 Subject: [PATCH 098/162] text change --- src/ESP32React/UploadFileService.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ESP32React/UploadFileService.cpp b/src/ESP32React/UploadFileService.cpp index 4aa634c2a..3d4e99152 100644 --- a/src/ESP32React/UploadFileService.cpp +++ b/src/ESP32React/UploadFileService.cpp @@ -184,7 +184,7 @@ void UploadFileService::handleError(AsyncWebServerRequest * request, int code) { } void UploadFileService::handleEarlyDisconnect() { - emsesp::EMSESP::logger().info("Upload completed"); + emsesp::EMSESP::logger().info("Upload finished"); emsesp::EMSESP::system_.uart_init(); // re-enable UART _is_firmware = false; From 7c3782a43f7855e2a8708d1fa1d8f80eb4e9d043 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 14 Apr 2026 21:08:45 +0200 Subject: [PATCH 099/162] upload warnings --- interface/pnpm-lock.yaml | 8 +-- interface/src/app/status/Version.tsx | 49 +++++++++++++++-- interface/src/components/upload/DragNdrop.tsx | 21 +++++-- interface/src/i18n/cz/index.ts | 8 +-- interface/src/i18n/de/index.ts | 8 +-- interface/src/i18n/en/index.ts | 6 +- interface/src/i18n/fr/index.ts | 8 +-- interface/src/i18n/it/index.ts | 8 +-- interface/src/i18n/nl/index.ts | 8 ++- interface/src/i18n/no/index.ts | 8 +-- interface/src/i18n/pl/index.ts | 8 +-- interface/src/i18n/sk/index.ts | 8 +-- interface/src/i18n/sv/index.ts | 8 +-- interface/src/i18n/tr/index.ts | 8 +-- mock-api/restServer.ts | 35 ++++++++---- src/web/WebSettingsService.cpp | 4 +- src/web/WebStatusService.cpp | 55 ++++++++++--------- src/web/WebStatusService.h | 14 ++--- 18 files changed, 171 insertions(+), 101 deletions(-) diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index bbee8b712..ad95f9a21 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -1184,8 +1184,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.18: - resolution: {integrity: sha512-VSnGQAOLtP5mib/DPyg2/t+Tlv65NTBz83BJBJvmLVHHuKJVaDOBvJJykiT5TR++em5nfAySPccDZDa4oSrn8A==} + baseline-browser-mapping@2.10.19: + resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} engines: {node: '>=6.0.0'} hasBin: true @@ -4346,7 +4346,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.18: {} + baseline-browser-mapping@2.10.19: {} bin-build@3.0.0: dependencies: @@ -4407,7 +4407,7 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.18 + baseline-browser-mapping: 2.10.19 caniuse-lite: 1.0.30001788 electron-to-chromium: 1.5.336 node-releases: 2.0.37 diff --git a/interface/src/app/status/Version.tsx b/interface/src/app/status/Version.tsx index 72b39cc0d..0930fbcc5 100644 --- a/interface/src/app/status/Version.tsx +++ b/interface/src/app/status/Version.tsx @@ -274,6 +274,7 @@ const InstallDialog = memo( fetchDevVersion, latestVersion, latestDevVersion, + upgradeImportantMessageType, downloadOnly, platform, LL, @@ -284,6 +285,7 @@ const InstallDialog = memo( fetchDevVersion: boolean; latestVersion?: VersionInfo; latestDevVersion?: VersionInfo; + upgradeImportantMessageType: number; downloadOnly: boolean; platform: string; LL: TranslationFunctions; @@ -313,6 +315,18 @@ const InstallDialog = memo( fetchDevVersion ? latestDevVersion?.name : latestVersion?.name )} + + {upgradeImportantMessageType === 1 && LL.UPGRADE_IMPORTANT_MESSAGES_1()} + {upgradeImportantMessageType === 2 && LL.UPGRADE_IMPORTANT_MESSAGES_2()} + + + {LL.ONLINE_HELP()} + + diff --git a/interface/src/components/upload/DragNdrop.tsx b/interface/src/components/upload/DragNdrop.tsx index 4bc865fc3..fdcc0cc9d 100644 --- a/interface/src/components/upload/DragNdrop.tsx +++ b/interface/src/components/upload/DragNdrop.tsx @@ -211,14 +211,26 @@ const DragNdrop = ({ text, onFileSelected }: DragNdropProps) => { {LL.UPGRADE_IMPORTANT_MESSAGES()} - {upgradeImportantMessageType === 1 && - LL.UPGRADE_IMPORTANT_MESSAGES_1()} {upgradeImportantMessageType === 2 && LL.UPGRADE_IMPORTANT_MESSAGES_2()} + {upgradeImportantMessageType === 1 && ( + <> + {LL.UPGRADE_IMPORTANT_MESSAGES_1()} + + + {LL.DOWNLOAD_SYSTEM_BACKUP()} + + + + )}{' '} {LL.ONLINE_HELP()} From c4db8e3914ca6555119f4f5a45fdca49d9cd5366 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 16 Apr 2026 08:10:43 +0200 Subject: [PATCH 108/162] set length for more fetch telegrams --- src/devices/thermostat.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index b2aec1186..e27b08e5c 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -73,15 +73,15 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i timer2_typeids = {0x42, 0x4C, 0x56, 0x60}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { - register_telegram_type(monitor_typeids[i], "RC35Monitor", false, MAKE_PF_CB(process_RC35Monitor)); - register_telegram_type(set_typeids[i], "RC35Set", false, MAKE_PF_CB(process_RC35Set)); - register_telegram_type(timer_typeids[i], "RC35Timer", false, MAKE_PF_CB(process_RC35Timer)); - register_telegram_type(timer2_typeids[i], "RC35Timer2", false, MAKE_PF_CB(process_RC35Timer)); + register_telegram_type(monitor_typeids[i], "RC35Monitor", false, MAKE_PF_CB(process_RC35Monitor), 15); + register_telegram_type(set_typeids[i], "RC35Set", false, MAKE_PF_CB(process_RC35Set), 42); + register_telegram_type(timer_typeids[i], "RC35Timer", false, MAKE_PF_CB(process_RC35Timer), 99); + register_telegram_type(timer2_typeids[i], "RC35Timer2", false, MAKE_PF_CB(process_RC35Timer), 99); } register_telegram_type(EMS_TYPE_IBASettings, "IBASettings", true, MAKE_PF_CB(process_IBASettings), 22); register_telegram_type(EMS_TYPE_wwSettings, "WWSettings", true, MAKE_PF_CB(process_RC35wwSettings), 10); - register_telegram_type(0x38, "WWTimer", true, MAKE_PF_CB(process_RC35wwTimer)); - register_telegram_type(0x39, "WWCircTimer", true, MAKE_PF_CB(process_RC35wwTimer)); + register_telegram_type(0x38, "WWTimer", true, MAKE_PF_CB(process_RC35wwTimer), 99); + register_telegram_type(0x39, "WWCircTimer", true, MAKE_PF_CB(process_RC35wwTimer), 99); // RC20 } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC20) { @@ -92,10 +92,10 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i timer_typeids = {0x8F}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { - register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor)); - register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set)); - register_telegram_type(curve_typeids[i], "RC20Temp", false, MAKE_PF_CB(process_RC20Temp)); - register_telegram_type(timer_typeids[i], "RC20Timer", false, MAKE_PF_CB(process_RC20Timer)); + register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor), 14); + register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set), 30); + register_telegram_type(curve_typeids[i], "RC20Temp", false, MAKE_PF_CB(process_RC20Temp), 7); + register_telegram_type(timer_typeids[i], "RC20Timer", false, MAKE_PF_CB(process_RC20Timer), 99); } } else { // remote thermostat uses only 0xAF @@ -108,8 +108,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set_typeids = {0xAD}; const size_t size = monitor_typeids.size(); for (uint8_t i = 0; i < size; i++) { - register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor_2)); - register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set_2)); + register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor_2), 8); + register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set_2), 22); } } else { // remote thermostat uses only 0xAF @@ -128,8 +128,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(curve_typeids[i], "RC30Temp", false, MAKE_PF_CB(process_RC30Temp), 25); register_telegram_type(timer_typeids[i], "RC30Timer", false, MAKE_PF_CB(process_RC35Timer), 99); } - register_telegram_type(0xA9, "RC30Vacation", true, MAKE_PF_CB(process_RC30Vacation)); - register_telegram_type(EMS_TYPE_RC30wwSettings, "RC30WWSettings", true, MAKE_PF_CB(process_RC30wwSettings)); + register_telegram_type(0xA9, "RC30Vacation", true, MAKE_PF_CB(process_RC30Vacation), 57); + register_telegram_type(EMS_TYPE_RC30wwSettings, "RC30WWSettings", true, MAKE_PF_CB(process_RC30wwSettings), 5); register_telegram_type(0x38, "WWTimer", true, MAKE_PF_CB(process_RC35wwTimer), 99); register_telegram_type(0x39, "WWCircTimer", true, MAKE_PF_CB(process_RC35wwTimer), 99); From 8a72ab42cbdabccbec03260190b6681651311be4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 16 Apr 2026 08:18:17 +0200 Subject: [PATCH 109/162] dev 14, changelog --- CHANGELOG_LATEST.md | 5 ++++- src/emsesp_version.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index eceb2daf3..8d071734e 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -12,11 +12,12 @@ For more details go to [emsesp.org](https://emsesp.org/). - prometheus metrics for temperature/analog/scheduler/custom [#2962](https://github.com/emsesp/EMS-ESP32/issues/2962) - boiler pumpkick [#2965](https://github.com/emsesp/EMS-ESP32/discussions/2965) - heatpump reset [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) -- 2.nd freshwater module (dhw4) [#2991](https://github.com/emsesp/EMS-ESP32/issues/2991) +- 2.nd freshwater module (dhw4, dhw5) [#2991](https://github.com/emsesp/EMS-ESP32/issues/2991) ## Fixed - SRC climate creation [#2936](https://github.com/emsesp/EMS-ESP32/issues/2936) and [#2960](https://github.com/emsesp/EMS-ESP32/issues/2960) +- missing translations [#3015](https://github.com/emsesp/EMS-ESP32/issues/3015) ## Changed @@ -28,3 +29,5 @@ For more details go to [emsesp.org](https://emsesp.org/). - support `minflowtemp` and `baseflowtemp` [#2969](https://github.com/emsesp/EMS-ESP32/discussions/2969) - update version if it is 00.00 in first read [#2981](https://github.com/emsesp/EMS-ESP32/issues/2981) - device class for % values [#2980](https://github.com/emsesp/EMS-ESP32/issues/2980) +- fetch telegrams: set length to fetch [#3017](https://github.com/emsesp/EMS-ESP32/issues/3017) +- move http client from stack to heap diff --git a/src/emsesp_version.h b/src/emsesp_version.h index bfa8e598e..445611505 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.13" +#define EMSESP_APP_VERSION "3.8.2-dev.14" From d2302eaa858b8641722b5d6817c6987208388288 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 17 Apr 2026 15:59:13 +0200 Subject: [PATCH 110/162] dev15, rollback mbedlt change for memory saving --- src/ESP32React/ArduinoJsonJWT.cpp | 16 ++++++++++------ src/emsesp_version.h | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ESP32React/ArduinoJsonJWT.cpp b/src/ESP32React/ArduinoJsonJWT.cpp index bbc2b11ac..7e7676af5 100644 --- a/src/ESP32React/ArduinoJsonJWT.cpp +++ b/src/ESP32React/ArduinoJsonJWT.cpp @@ -70,12 +70,16 @@ void ArduinoJsonJWT::parseJWT(String jwt, JsonDocument & jsonDocument) { */ String ArduinoJsonJWT::sign(String & payload) { std::array hmacResult{}; - mbedtls_md_hmac(mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), - reinterpret_cast(_secret.c_str()), - _secret.length(), - reinterpret_cast(payload.c_str()), - payload.length(), - hmacResult.data()); + { + mbedtls_md_context_t ctx; + mbedtls_md_type_t md_type = MBEDTLS_MD_SHA256; + mbedtls_md_init(&ctx); + mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(md_type), 1); + mbedtls_md_hmac_starts(&ctx, reinterpret_cast(_secret.c_str()), _secret.length()); + mbedtls_md_hmac_update(&ctx, reinterpret_cast(payload.c_str()), payload.length()); + mbedtls_md_hmac_finish(&ctx, hmacResult.data()); + mbedtls_md_free(&ctx); + } return encode(reinterpret_cast(hmacResult.data()), hmacResult.size()); } diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 445611505..8bac1722e 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.14" +#define EMSESP_APP_VERSION "3.8.2-dev.15" From fe488443da1ce3eeae3cc8e52b40f7b5c659aaa1 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 17 Apr 2026 18:01:26 +0200 Subject: [PATCH 111/162] package update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 106 +++++++++++++++++++-------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/interface/package.json b/interface/package.json index 5776d6d2d..e12e80a2a 100644 --- a/interface/package.json +++ b/interface/package.json @@ -44,7 +44,7 @@ "react-router": "^7.14.1", "react-toastify": "^11.0.5", "typesafe-i18n": "^5.27.1", - "typescript": "^6.0.2" + "typescript": "^6.0.3" }, "devDependencies": { "@babel/core": "^7.29.0", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 81cbc74c8..6d40af9a9 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -70,10 +70,10 @@ importers: version: 11.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) typesafe-i18n: specifier: ^5.27.1 - version: 5.27.1(typescript@6.0.2) + version: 5.27.1(typescript@6.0.3) typescript: - specifier: ^6.0.2 - version: 6.0.2 + specifier: ^6.0.3 + version: 6.0.3 devDependencies: '@babel/core': specifier: ^7.29.0 @@ -119,7 +119,7 @@ importers: version: 5.46.1 typescript-eslint: specifier: ^8.58.2 - version: 8.58.2(eslint@10.2.0)(typescript@6.0.2) + version: 8.58.2(eslint@10.2.0)(typescript@6.0.3) vite: specifier: ^8.0.8 version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) @@ -128,7 +128,7 @@ importers: version: 0.6.1(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.2)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) packages: @@ -1519,8 +1519,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.338: - resolution: {integrity: sha512-KVQQ3xko9/coDX3qXLUEEbqkKT8L+1DyAovrtu0Khtrt9wjSZ+7CZV4GVzxFy9Oe1NbrIU1oVXCwHJruIA1PNg==} + electron-to-chromium@1.5.340: + resolution: {integrity: sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -3213,8 +3213,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - typescript@6.0.2: - resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true @@ -4187,40 +4187,40 @@ snapshots: dependencies: '@types/node': 25.6.0 - '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.2))(eslint@10.2.0)(typescript@6.0.2)': + '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/type-utils': 8.58.2(eslint@10.2.0)(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.2) + '@typescript-eslint/type-utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.58.2 eslint: 10.2.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.2) - typescript: 6.0.2 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.2)': + '@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.58.2 debug: 4.4.3 eslint: 10.2.0 - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.58.2(typescript@6.0.2)': + '@typescript-eslint/project-service@8.58.2(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) '@typescript-eslint/types': 8.58.2 debug: 4.4.3 - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4229,47 +4229,47 @@ snapshots: '@typescript-eslint/types': 8.58.2 '@typescript-eslint/visitor-keys': 8.58.2 - '@typescript-eslint/tsconfig-utils@8.58.2(typescript@6.0.2)': + '@typescript-eslint/tsconfig-utils@8.58.2(typescript@6.0.3)': dependencies: - typescript: 6.0.2 + typescript: 6.0.3 - '@typescript-eslint/type-utils@8.58.2(eslint@10.2.0)(typescript@6.0.2)': + '@typescript-eslint/type-utils@8.58.2(eslint@10.2.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) debug: 4.4.3 eslint: 10.2.0 - ts-api-utils: 2.5.0(typescript@6.0.2) - typescript: 6.0.2 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.58.2': {} - '@typescript-eslint/typescript-estree@8.58.2(typescript@6.0.2)': + '@typescript-eslint/typescript-estree@8.58.2(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.58.2(typescript@6.0.2) - '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.2) + '@typescript-eslint/project-service': 8.58.2(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) '@typescript-eslint/types': 8.58.2 '@typescript-eslint/visitor-keys': 8.58.2 debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@6.0.2) - typescript: 6.0.2 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@6.0.2)': + '@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) eslint: 10.2.0 - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4409,7 +4409,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.10.19 caniuse-lite: 1.0.30001788 - electron-to-chromium: 1.5.338 + electron-to-chromium: 1.5.340 node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4773,7 +4773,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.338: {} + electron-to-chromium@1.5.340: {} emoji-regex@10.6.0: {} @@ -6387,13 +6387,13 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - ts-api-utils@2.5.0(typescript@6.0.2): + ts-api-utils@2.5.0(typescript@6.0.3): dependencies: - typescript: 6.0.2 + typescript: 6.0.3 - tsconfck@3.1.6(typescript@6.0.2): + tsconfck@3.1.6(typescript@6.0.3): optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 tslib@2.8.1: {} @@ -6413,22 +6413,22 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typesafe-i18n@5.27.1(typescript@6.0.2): + typesafe-i18n@5.27.1(typescript@6.0.3): dependencies: - typescript: 6.0.2 + typescript: 6.0.3 - typescript-eslint@8.58.2(eslint@10.2.0)(typescript@6.0.2): + typescript-eslint@8.58.2(eslint@10.2.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.2))(eslint@10.2.0)(typescript@6.0.2) - '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@6.0.2) - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.2) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) eslint: 10.2.0 - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - typescript@6.0.2: {} + typescript@6.0.3: {} unbzip2-stream@1.4.3: dependencies: @@ -6507,11 +6507,11 @@ snapshots: stack-trace: 1.0.0-pre2 vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) - vite-tsconfig-paths@6.1.1(typescript@6.0.2)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 - tsconfck: 3.1.6(typescript@6.0.2) + tsconfck: 3.1.6(typescript@6.0.3) vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color From ce1dd6233d8ece57db8b0bc4635a008d3d3f828a Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 17 Apr 2026 18:01:37 +0200 Subject: [PATCH 112/162] update --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 8d071734e..ff1dccb29 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -13,6 +13,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - boiler pumpkick [#2965](https://github.com/emsesp/EMS-ESP32/discussions/2965) - heatpump reset [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) - 2.nd freshwater module (dhw4, dhw5) [#2991](https://github.com/emsesp/EMS-ESP32/issues/2991) +- full system backup and restore ## Fixed From e542f5809f55c7f69ae8719b721da1c8d03c2c1a Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 17 Apr 2026 18:01:44 +0200 Subject: [PATCH 113/162] remove bogus file --- src/core/common.h | 91 ----------------------------------------------- 1 file changed, 91 deletions(-) delete mode 100644 src/core/common.h diff --git a/src/core/common.h b/src/core/common.h deleted file mode 100644 index a9ca215f5..000000000 --- a/src/core/common.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef EMSESP_COMMON_H -#define EMSESP_COMMON_H - -#include - -using uuid::log::Level; - -#if defined(EMSESP_DEBUG) -#define LOG_DEBUG(...) logger_.debug(__VA_ARGS__) -#else -#define LOG_DEBUG(...) -#endif - -#define LOG_INFO(...) logger_.info(__VA_ARGS__) -#define LOG_TRACE(...) logger_.trace(__VA_ARGS__) -#define LOG_NOTICE(...) logger_.notice(__VA_ARGS__) -#define LOG_WARNING(...) logger_.warning(__VA_ARGS__) -#define LOG_ERROR(...) logger_.err(__VA_ARGS__) - -// flash strings -using uuid::string_vector; -using string_vector = std::vector; - -#ifdef FPSTR -#undef FPSTR -#endif - -// clang-format off - - #define FPSTR(pstr_pointer) pstr_pointer - #define MAKE_WORD_CUSTOM(string_name, string_literal) static const char __pstr__##string_name[] = string_literal; - #define MAKE_WORD(string_name) MAKE_WORD_CUSTOM(string_name, #string_name) - - #define F_(string_name) (__pstr__##string_name) - #define FL_(list_name) (__pstr__L_##list_name) - - // Translation counter - capture baseline before any MAKE_TRANSLATION calls - enum { EMSESP_TRANSLATION_COUNT_START = __COUNTER__ }; - - // The language settings below must match system.cpp - #if defined(EMSESP_EN_ONLY) - // EN only - #define MAKE_WORD_TRANSLATION(list_name, en, ...) static const char * const __pstr__L_##list_name[] = {en, nullptr}; - #define MAKE_TRANSLATION(list_name, shortname, en, ...) static constexpr int __translation_counter_##list_name = __COUNTER__; static const char * const __pstr__L_##list_name[] = {shortname, en, nullptr}; - #elif defined(EMSESP_TEST) || defined(EMSESP_DE_ONLY) - // EN + DE (Test mode uses two languages to save flash memory) - #define MAKE_WORD_TRANSLATION(list_name, en, de, ...) static const char * const __pstr__L_##list_name[] = {en, de, nullptr}; - #define MAKE_TRANSLATION(list_name, shortname, en, de, ...) static constexpr int __translation_counter_##list_name = __COUNTER__; static const char * const __pstr__L_##list_name[] = {shortname, en, de, nullptr}; - #else - // All languages - #define MAKE_WORD_TRANSLATION(list_name, ...) static const char * const __pstr__L_##list_name[] = {__VA_ARGS__, nullptr}; - #define MAKE_TRANSLATION(list_name, ...) static constexpr int __translation_counter_##list_name = __COUNTER__; static const char * const __pstr__L_##list_name[] = {__VA_ARGS__, nullptr}; - #endif - - #define MAKE_NOTRANSLATION(list_name, ...) static const char * const __pstr__L_##list_name[] = {__VA_ARGS__, nullptr}; - - // fixed strings, no translations - #define MAKE_ENUM_FIXED(enum_name, ...) static const char * const __pstr__L_##enum_name[] = {__VA_ARGS__, nullptr}; - - // with translations - #define MAKE_ENUM(enum_name, ...) static const char * const * __pstr__L_##enum_name[] = {__VA_ARGS__, nullptr}; - -// clang-format on - -// load translations -#include "locale_translations.h" -#include "locale_common.h" - -// Translation count - dynamically calculated at compile-time -enum { EMSESP_TRANSLATION_COUNT_END = __COUNTER__ }; -static constexpr uint16_t EMSESP_TRANSLATION_COUNT = EMSESP_TRANSLATION_COUNT_END - EMSESP_TRANSLATION_COUNT_START - 1; - -#endif From 6658b11adf688b858dcf2cb8a8db759d03423475 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 17 Apr 2026 18:01:51 +0200 Subject: [PATCH 114/162] use c++20 --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index ba1d304d8..0728ef0f6 100644 --- a/Makefile +++ b/Makefile @@ -52,13 +52,13 @@ INCLUDES := src/core src/devices src/web src/test lib_standalone lib/* lib/semv LIBRARIES := CPPCHECK = cppcheck -CHECKFLAGS = -q --force --std=gnu++17 +CHECKFLAGS = -q --force --std=gnu++20 #---------------------------------------------------------------------- # Languages Standard #---------------------------------------------------------------------- -C_STANDARD := -std=c17 -CXX_STANDARD := -std=gnu++17 +C_STANDARD := -std=c20 +CXX_STANDARD := -std=gnu++20 #---------------------------------------------------------------------- # Defined Symbols From c9005e8aa9bb7a25c5453cc926f4fed6325d0f03 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 10:02:25 +0200 Subject: [PATCH 115/162] upgrade github actions --- .github/workflows/dev_release.yml | 6 +++--- .github/workflows/github-releases-to-discord.yml | 2 +- .github/workflows/pr_check.yml | 2 +- .github/workflows/sonar_check.yml | 2 +- .github/workflows/stable_release.yml | 4 ++-- .github/workflows/test_release.yml | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/dev_release.yml b/.github/workflows/dev_release.yml index 0eb0f329c..3c3dcf7ea 100644 --- a/.github/workflows/dev_release.yml +++ b/.github/workflows/dev_release.yml @@ -28,7 +28,7 @@ jobs: node-version: 24 - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Enable Corepack run: corepack enable pnpm @@ -62,13 +62,13 @@ jobs: platformio run - name: Commit the generated files - uses: stefanzweifel/git-auto-commit-action@v5 + uses: stefanzweifel/git-auto-commit-action@v7 with: commit_message: "chore: update generated files for v${{steps.build_info.outputs.VERSION}}" - name: Create GitHub Release id: 'automatic_releases' - uses: emsesp/action-automatic-releases@v1.0.0 + uses: emsesp/action-automatic-releases@v1.0.1 with: repo_token: '${{ secrets.GITHUB_TOKEN }}' title: Development Build v${{steps.build_info.outputs.VERSION}} diff --git a/.github/workflows/github-releases-to-discord.yml b/.github/workflows/github-releases-to-discord.yml index 4c559d8f9..aca7fd49c 100644 --- a/.github/workflows/github-releases-to-discord.yml +++ b/.github/workflows/github-releases-to-discord.yml @@ -11,7 +11,7 @@ jobs: contents: read steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: GitHub Releases To Discord uses: SethCohen/github-releases-to-discord@v1.13.1 diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 1b35c830b..8f668d31d 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install python 3.13 uses: actions/setup-python@v6 diff --git a/.github/workflows/sonar_check.yml b/.github/workflows/sonar_check.yml index 2b3af4291..3a476fb5b 100644 --- a/.github/workflows/sonar_check.yml +++ b/.github/workflows/sonar_check.yml @@ -19,7 +19,7 @@ jobs: BUILD_WRAPPER_OUT_DIR: bw-output steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install Build Wrapper diff --git a/.github/workflows/stable_release.yml b/.github/workflows/stable_release.yml index bf834352b..76fb12038 100644 --- a/.github/workflows/stable_release.yml +++ b/.github/workflows/stable_release.yml @@ -26,7 +26,7 @@ jobs: node-version: 24 - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Enable Corepack run: corepack enable pnpm @@ -54,7 +54,7 @@ jobs: platformio run - name: Create GitHub Release - uses: emsesp/action-automatic-releases@v1.0.0 + uses: emsesp/action-automatic-releases@v1.0.1 with: repo_token: '${{ secrets.GITHUB_TOKEN }}' prerelease: false diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 63d160048..a9da6a564 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -28,7 +28,7 @@ jobs: node-version: 24 - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Enable Corepack run: corepack enable pnpm @@ -63,7 +63,7 @@ jobs: - name: Create GitHub Release id: 'automatic_releases' - uses: emsesp/action-automatic-releases@v1.0.0 + uses: emsesp/action-automatic-releases@v1.0.1 with: repo_token: '${{ secrets.GITHUB_TOKEN }}' title: Test Build v${{steps.build_info.outputs.VERSION}} From b13fcd8939b543ba6937aa29d84907e771a4557e Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:32:54 +0200 Subject: [PATCH 116/162] single static-content handler serving all assets --- src/ESP32React/ESP32React.cpp | 114 ++++++++++++++++++++-------------- src/ESP32React/ESP32React.h | 1 + 2 files changed, 69 insertions(+), 46 deletions(-) diff --git a/src/ESP32React/ESP32React.cpp b/src/ESP32React/ESP32React.cpp index 41536153f..73575178c 100644 --- a/src/ESP32React/ESP32React.cpp +++ b/src/ESP32React/ESP32React.cpp @@ -2,10 +2,75 @@ #include "WWWData.h" // include auto-generated static web resources +#include + static constexpr const char CACHE_CONTROL[] = "public,max-age=60"; +// Single static-content handler serving all assets embedded in WWWData.h. +class StaticContentHandler : public AsyncWebHandler { + public: + bool canHandle(AsyncWebServerRequest * request) const override { + const auto method = request->method(); + return method == HTTP_GET || method == HTTP_HEAD || method == HTTP_OPTIONS; + } + + void handleRequest(AsyncWebServerRequest * request) override { + // OPTIONS is handled generically - the server-level CORS headers are + // attached via DefaultHeaders in ESP32React::begin(). + if (request->method() == HTTP_OPTIONS) { + request->send(200); + return; + } + + const char * url = request->url().c_str(); + const WWWAsset * found = lookup(url); + const WWWAsset * asset = found ? found : index_asset(); + + if (asset == nullptr) { + request->send(404); + return; + } + + // If the client already has this exact ETag, respond 304 Not Modified without sending the body. + const String & inm = request->header(asyncsrv::T_INM); + if (inm.length() != 0 && strcmp(inm.c_str(), asset->etag) == 0) { + request->send(304); + return; + } + + AsyncWebServerResponse * response = request->beginResponse(200, asset->contentType, asset->content, asset->len); + response->addHeader(asyncsrv::T_Content_Encoding, asyncsrv::T_gzip, false); + response->addHeader(asyncsrv::T_ETag, asset->etag, false); + response->addHeader(asyncsrv::T_Cache_Control, CACHE_CONTROL, false); + request->send(response); + } + + private: + // Exact-match lookup in the asset table + static const WWWAsset * lookup(const char * url) { + for (size_t i = 0; i < WWW_ASSETS_COUNT; i++) { + if (strcmp(WWW_ASSETS[i].uri, url) == 0) { + return &WWW_ASSETS[i]; + } + } + return nullptr; + } + + // Returns the /index.html asset, used as the SPA fallback for any GET + // that didn't match an embedded asset (React Router handles routing on + // the client side). + static const WWWAsset * index_asset() { + static const WWWAsset * cached = nullptr; + if (cached == nullptr) { + cached = lookup("/index.html"); + } + return cached; + } +}; + ESP32React::ESP32React(AsyncWebServer * server, FS * fs) - : _securitySettingsService(server, fs) + : _server(server) + , _securitySettingsService(server, fs) , _networkSettingsService(server, fs, &_securitySettingsService) , _wifiScanner(server, &_securitySettingsService) , _networkStatus(server, &_securitySettingsService) @@ -17,50 +82,6 @@ ESP32React::ESP32React(AsyncWebServer * server, FS * fs) , _mqttSettingsService(server, fs, &_securitySettingsService) , _mqttStatus(server, &_mqttSettingsService, &_securitySettingsService) , _authenticationService(server, &_securitySettingsService) { - // - // Serve static web resources - // - - ArRequestHandlerFunction indexHtmlHandler = nullptr; - - WWWData::registerRoutes([server, &indexHtmlHandler](const char * uri, const String & contentType, const uint8_t * content, size_t len, const String & hash) { - String etag = "\"" + hash + "\""; // RFC9110: ETag must be enclosed in double quotes - - ArRequestHandlerFunction requestHandler = [contentType, content, len, etag](AsyncWebServerRequest * request) { - if (request->header(asyncsrv::T_INM) == etag) { - request->send(304); - return; - } - - AsyncWebServerResponse * response = request->beginResponse(200, contentType, content, len); - response->addHeader(asyncsrv::T_Content_Encoding, asyncsrv::T_gzip, false); - response->addHeader(asyncsrv::T_ETag, etag, false); - response->addHeader(asyncsrv::T_Cache_Control, CACHE_CONTROL, false); - request->send(response); - }; - - server->on(uri, HTTP_GET, requestHandler); - - // Capture index.html handler to set onNotFound once after all routes are registered - if (strcmp(uri, "/index.html") == 0) { - indexHtmlHandler = requestHandler; - } - }); - - // Set onNotFound handler once after all routes are registered - // Serving non matching get requests with "/index.html" - // OPTIONS get a straight up 200 response - if (indexHtmlHandler != nullptr) { - server->onNotFound([indexHtmlHandler](AsyncWebServerRequest * request) { - if (request->method() == HTTP_GET) { - indexHtmlHandler(request); - } else if (request->method() == HTTP_OPTIONS) { - request->send(200); - } else { - request->send(404); // not found - } - }); - } } void ESP32React::begin() { @@ -78,10 +99,11 @@ void ESP32React::begin() { _ntpSettingsService.begin(); _mqttSettingsService.begin(); _securitySettingsService.begin(); + _server->addHandler(new StaticContentHandler()); } void ESP32React::loop() { _networkSettingsService.loop(); _apSettingsService.loop(); _mqttSettingsService.loop(); -} \ No newline at end of file +} diff --git a/src/ESP32React/ESP32React.h b/src/ESP32React/ESP32React.h index f5af50a8a..cbcea487e 100644 --- a/src/ESP32React/ESP32React.h +++ b/src/ESP32React/ESP32React.h @@ -68,6 +68,7 @@ class ESP32React { } private: + AsyncWebServer * _server; SecuritySettingsService _securitySettingsService; NetworkSettingsService _networkSettingsService; WiFiScanner _wifiScanner; From dae139aa01bef7a2b3e124acb9d65a105280f2b9 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:33:13 +0200 Subject: [PATCH 117/162] single static-content handler serving all assets --- interface/progmem-generator.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/interface/progmem-generator.js b/interface/progmem-generator.js index 30fc00094..be5cead21 100644 --- a/interface/progmem-generator.js +++ b/interface/progmem-generator.js @@ -24,20 +24,26 @@ let bundleStats = { other: { count: 0, uncompressed: 0, compressed: 0 } }; -const generateWWWClass = - () => `typedef std::function RouteRegistrationHandler; -// Bundle Statistics: +// AsyncWebHandler that performs the lookup. +const generateWWWClass = () => `// Bundle Statistics: // - Total compressed size: ${(totalSize / 1000).toFixed(1)} KB // - Total uncompressed size: ${(Object.values(bundleStats).reduce((sum, stat) => sum + stat.uncompressed, 0) / 1000).toFixed(1)} KB // - Compression ratio: ${(((Object.values(bundleStats).reduce((sum, stat) => sum + stat.uncompressed, 0) - totalSize) / Object.values(bundleStats).reduce((sum, stat) => sum + stat.uncompressed, 0)) * 100).toFixed(1)}% // - Generated on: ${new Date().toISOString()} -class WWWData { -${INDENT}public: -${INDENT.repeat(2)}static void registerRoutes(RouteRegistrationHandler handler) { -${fileInfo.map((f) => `${INDENT.repeat(3)}handler("${f.uri}", "${f.mimeType}", ${f.variable}, ${f.size}, ${f.hash});`).join('\n')} -${INDENT.repeat(2)}} +struct WWWAsset { +${INDENT}const char * uri; +${INDENT}const char * contentType; +${INDENT}const uint8_t * content; +${INDENT}size_t len; +${INDENT}const char * etag; // already includes enclosing double quotes }; + +static const WWWAsset WWW_ASSETS[] = { +${fileInfo.map((f) => `${INDENT}{"${f.uri}", "${f.mimeType}", ${f.variable}, ${f.size}, "\\"${f.rawHash}\\""},`).join('\n')} +}; + +static constexpr size_t WWW_ASSETS_COUNT = sizeof(WWW_ASSETS) / sizeof(WWW_ASSETS[0]); `; const getFilesSync = (dir, files = []) => { @@ -72,6 +78,7 @@ const writeFile = (relativeFilePath, buffer) => { const zipBuffer = zlib.gzipSync(buffer, { level: 9 }); // const hash = crypto.createHash('sha256').update(zipBuffer).digest('hex'); const hash = etag(zipBuffer); // use smaller md5 instead of sha256 + const rawHash = hash.replace(/^"|"$/g, ''); zipBuffer.forEach((b) => { if (!(size % bytesPerLine)) { @@ -94,7 +101,8 @@ const writeFile = (relativeFilePath, buffer) => { mimeType, variable, size, - hash + hash, + rawHash }); totalSize += size; From 5a8a4517745df9efb86ef8b9f22c39e838c1d3a0 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:34:48 +0200 Subject: [PATCH 118/162] improve chunking --- interface/vite.config.ts | 54 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/interface/vite.config.ts b/interface/vite.config.ts index 0c16f6a7b..5c288677c 100644 --- a/interface/vite.config.ts +++ b/interface/vite.config.ts @@ -166,6 +166,51 @@ const createManualChunks = (detailed = false) => { }; }; +// Rolldown-native codeSplitting groups for the production build. +// See: https://rolldown.rs/reference/outputoptions.codesplitting +const createRolldownCodeSplitting = () => ({ + groups: [ + { name: '@preact', test: /[\\/]node_modules[\\/].*preact/, priority: 100 }, + { + name: '@react-router', + test: /[\\/]node_modules[\\/].*react-router/, + priority: 95 + }, + { + name: '@mui-material', + test: /[\\/]node_modules[\\/]@mui[\\/]material/, + priority: 95 + }, + { + name: '@mui-icons', + test: /[\\/]node_modules[\\/]@mui[\\/]icons-material/, + priority: 95 + }, + { name: '@alova', test: /[\\/]node_modules[\\/].*alova/, priority: 90 }, + { name: '@i18n', test: /[\\/]node_modules[\\/].*typesafe-i18n/, priority: 90 }, + { + name: '@toastify', + test: /[\\/]node_modules[\\/].*react-toastify/, + priority: 90 + }, + { + name: '@table-library', + test: /[\\/]node_modules[\\/]@table-library/, + priority: 90 + }, + { name: 'vendor', test: /[\\/]node_modules[\\/]/, priority: 10 }, + // Collapse the lazy-loaded route stubs + shared app/components/utils + // code into one chunk. This cuts firmware-side route count roughly in + // half and speeds up route-matching on every incoming HTTP request. + { + name: 'app', + test: /[\\/](app|components|utils)[\\/]/, + priority: 5 + }, + { name: 'api', test: /[\\/]api[\\/]/, priority: 5 } + ] +}); + // Common build base configuration const createBaseBuildConfig = () => ({ target: ES_TARGET, @@ -330,10 +375,17 @@ export default defineConfig( chunkFileNames: 'assets/[name]-[hash].js', entryFileNames: 'assets/[name]-[hash].js', assetFileNames: 'assets/[name]-[hash].[ext]', + // Kept as a no-op for documentation/fallback. With Vite 8 manualChunks: createManualChunks(true), sourcemap: false } - } + }, + rolldownOptions: { + output: { + codeSplitting: createRolldownCodeSplitting() + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any } }; } From 644abf105de9bce850e7c13ed067f7e958cd9bf2 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:35:11 +0200 Subject: [PATCH 119/162] replace semver with home grown simplier alternative --- lib/semver/LICENSE | 22 ---- lib/semver/README.md | 7 -- lib/semver/Semver200_comparator.cpp | 121 ------------------ lib/semver/Semver200_parser.cpp | 187 ---------------------------- lib/semver/semver200.h | 53 -------- lib/semver/version.h | 149 ---------------------- lib/semver/version.inl | 132 -------------------- src/core/EMSESP_Version.h | 124 ++++++++++++++++++ 8 files changed, 124 insertions(+), 671 deletions(-) delete mode 100644 lib/semver/LICENSE delete mode 100644 lib/semver/README.md delete mode 100644 lib/semver/Semver200_comparator.cpp delete mode 100644 lib/semver/Semver200_parser.cpp delete mode 100644 lib/semver/semver200.h delete mode 100644 lib/semver/version.h delete mode 100644 lib/semver/version.inl create mode 100644 src/core/EMSESP_Version.h diff --git a/lib/semver/LICENSE b/lib/semver/LICENSE deleted file mode 100644 index 53234651b..000000000 --- a/lib/semver/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Marko Živanović - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/lib/semver/README.md b/lib/semver/README.md deleted file mode 100644 index 82c86d7d3..000000000 --- a/lib/semver/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About - -This project is MIT-licensed, C++14 implementation of [semantic versioning](http://semver.org) parser and comparator with support for modifying parsed version strings. Semantic versioning 2.0.0 specification is supported out-of-the-box and the code should be flexible-enough to support future revisions or other similar versioning schemes. - -Copyright (c) 2015 Marko Zivanovic - -Based on https://github.com/zmarko/semver diff --git a/lib/semver/Semver200_comparator.cpp b/lib/semver/Semver200_comparator.cpp deleted file mode 100644 index 1430bd14b..000000000 --- a/lib/semver/Semver200_comparator.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2015 Marko Zivanovic - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#include -#include -#include -#include "semver200.h" - -using namespace std; - -namespace version { - -namespace { - -// Compare normal version identifiers. -int compare_normal(const Version_data & l, const Version_data & r) { - if (l.major > r.major) - return 1; - if (l.major < r.major) - return -1; - if (l.minor > r.minor) - return 1; - if (l.minor < r.minor) - return -1; - if (l.patch > r.patch) - return 1; - if (l.patch < r.patch) - return -1; - return 0; -} - -// Compare alphanumeric prerelease identifiers. -inline int cmp_alnum_prerel_ids(const string & l, const string & r) { - auto cmp = l.compare(r); - if (cmp == 0) { - return cmp; - } else { - return cmp > 0 ? 1 : -1; - } -} - -// Compare numeric prerelease identifiers. -inline int cmp_num_prerel_ids(const string & l, const string & r) { - long long li = stoll(l); - long long ri = stoll(r); - if (li == ri) - return 0; - return li > ri ? 1 : -1; -} - -using Prerel_type_pair = pair; -using Prerel_id_comparator = function; -const map comparators = {{{Id_type::alnum, Id_type::alnum}, cmp_alnum_prerel_ids}, - {{Id_type::alnum, Id_type::num}, [](const string &, const string &) { return 1; }}, - {{Id_type::num, Id_type::alnum}, [](const string &, const string &) { return -1; }}, - {{Id_type::num, Id_type::num}, cmp_num_prerel_ids}}; - -// Compare prerelease identifiers based on their types. -inline int compare_prerel_identifiers(const Prerelease_identifier & l, const Prerelease_identifier & r) { - auto cmp = comparators.at({l.second, r.second}); - return cmp(l.first, r.first); -} - -inline int cmp_rel_prerel(const Prerelease_identifiers & l, const Prerelease_identifiers & r) { - if (l.empty() && !r.empty()) - return 1; - if (r.empty() && !l.empty()) - return -1; - return 0; -} -} // namespace - -int Semver200_comparator::compare(const Version_data & l, const Version_data & r) const { - // Compare normal version components. - int cmp = compare_normal(l, r); - if (cmp != 0) - return cmp; - - // Compare if one version is release and the other prerelease - release is always higher. - cmp = cmp_rel_prerel(l.prerelease_ids, r.prerelease_ids); - if (cmp != 0) - return cmp; - - // Compare prerelease by looking at each identifier: numeric ones are compared as numbers, - // alphanum as ASCII strings. - auto shorter = min(l.prerelease_ids.size(), r.prerelease_ids.size()); - for (size_t i = 0; i < shorter; i++) { - cmp = compare_prerel_identifiers(l.prerelease_ids[i], r.prerelease_ids[i]); - if (cmp != 0) - return cmp; - } - - // Prerelease identifiers are the same, to the length of the shorter version string; - // if they are the same length, then versions are equal, otherwise, longer one wins. - if (l.prerelease_ids.size() == r.prerelease_ids.size()) - return 0; - return l.prerelease_ids.size() > r.prerelease_ids.size() ? 1 : -1; -} - -} // namespace version diff --git a/lib/semver/Semver200_parser.cpp b/lib/semver/Semver200_parser.cpp deleted file mode 100644 index e5956be0e..000000000 --- a/lib/semver/Semver200_parser.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2015 Marko Zivanovic - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#include -#include -#include "semver200.h" - -using namespace std; - -namespace version { - -namespace { -enum class Parser_state { major, minor, patch, prerelease, build }; - -using Validator = function; -using State_transition_hook = function; -/// State transition is described by a character that triggers it, a state to transition to and -/// optional hook to be invoked on transition. -using Transition = tuple; -using Transitions = vector; -using State = tuple; -using State_machine = std::map; - -// Ranges of characters allowed in prerelease and build identifiers. -const vector> allowed_prerel_id_chars = {{'0', '9'}, {'A', 'Z'}, {'a', 'z'}, {'-', '-'}}; - -inline Transition mkx(const char c, Parser_state p, State_transition_hook pth) { - return make_tuple(c, p, pth); -} - -inline void Parse_error(const std::string & s) { - // EMSESP::logger().err("parse error: %s", s.c_str()); -} - -/// Advance parser state machine by a single step. -/** - Perform single step of parser state machine: if character matches one from transition tables - - trigger transition to next state; otherwise, validate if current token is in legal state - (throw Parse_error if not) and then add character to current token; State transition includes - preparing various vars for next state and invoking state transition hook (if specified) which is - where whole tokens are validated. - */ -inline void process_char(const char c, Parser_state & cstate, Parser_state & pstate, const Transitions & transitions, string & target, Validator validate) { - for (const auto & transition : transitions) { - if (c == get<0>(transition)) { - if (get<2>(transition)) - get<2>(transition)(target); - pstate = cstate; - cstate = get<1>(transition); - return; - } - } - validate(target, c); - target.push_back(c); -} - -/// Validate normal (major, minor, patch) version components. -inline void normal_version_validator(const string & tgt, const char c) { - if (c < '0' || c > '9') - Parse_error("invalid character encountered: " + string(1, c)); - if (tgt.compare(0, 1, "0") == 0) - Parse_error("leading 0 not allowed"); -} - -/// Validate that prerelease and build version identifiers are comprised of allowed chars only. -inline void prerelease_version_validator(const string &, const char c) { - bool res = false; - for (const auto & r : allowed_prerel_id_chars) { - res |= (c >= r.first && c <= r.second); - } - if (!res) - Parse_error("invalid character encountered: " + string(1, c)); -} - -inline bool is_identifier_numeric(const string & id) { - return id.find_first_not_of("0123456789") == string::npos; -} - -inline bool check_for_leading_0(const string & str) { - return str.length() > 1 && str[0] == '0'; -} - -/// Validate every individual prerelease identifier, determine it's type and add it to collection. -void prerelease_hook_impl(string & id, Prerelease_identifiers & prerelease) { - if (id.empty()) - Parse_error("version identifier cannot be empty"); - Id_type t = Id_type::alnum; - if (is_identifier_numeric(id)) { - t = Id_type::num; - if (check_for_leading_0(id)) { - Parse_error("numeric identifiers cannot have leading 0"); - } - } - prerelease.push_back(Prerelease_identifier(id, t)); - id.clear(); -} - -/// Validate every individual build identifier and add it to collection. -void build_hook_impl(string & id, Parser_state & pstate, Build_identifiers & build, std::string & prerelease_id, Prerelease_identifiers & prerelease) { - // process last token left from parsing prerelease data - if (pstate == Parser_state::prerelease) - prerelease_hook_impl(prerelease_id, prerelease); - if (id.empty()) - Parse_error("version identifier cannot be empty"); - build.push_back(id); - id.clear(); -} - -} // namespace - -/// Parse semver 2.0.0-compatible string to Version_data structure. -/** - Version text parser is implemented as a state machine. In each step one successive character from version - string is consumed and is either added to current token or triggers state transition. Hooks can be - injected into state transitions for validation/customization purposes. - */ -Version_data Semver200_parser::parse(const string & s) const { - string major; - string minor; - string patch; - string prerelease_id; - string build_id; - Prerelease_identifiers prerelease; - Build_identifiers build; - Parser_state cstate{Parser_state::major}; - Parser_state pstate; - - auto prerelease_hook = [&](string & id) { prerelease_hook_impl(id, prerelease); }; - - auto build_hook = [&](string & id) { build_hook_impl(id, pstate, build, prerelease_id, prerelease); }; - - // State transition tables - auto major_trans = {mkx('.', Parser_state::minor, {})}; - auto minor_trans = {mkx('.', Parser_state::patch, {})}; - auto patch_trans = {mkx('-', Parser_state::prerelease, {}), mkx('+', Parser_state::build, {})}; - auto prerelease_trans = {// When identifier separator (.) is found, stay in the same state but invoke hook - // in order to process each individual identifier separately. - mkx('.', Parser_state::prerelease, prerelease_hook), - mkx('+', Parser_state::build, {})}; - auto build_trans = {// Same stay-in-the-same-state-but-invoke-hook trick from above. - mkx('.', Parser_state::build, build_hook)}; - - State_machine state_machine = {{Parser_state::major, State{major_trans, major, normal_version_validator}}, - {Parser_state::minor, State{minor_trans, minor, normal_version_validator}}, - {Parser_state::patch, State{patch_trans, patch, normal_version_validator}}, - {Parser_state::prerelease, State{prerelease_trans, prerelease_id, prerelease_version_validator}}, - {Parser_state::build, State{build_trans, build_id, prerelease_version_validator}}}; - - // Main loop. - for (const auto & c : s) { - auto state = state_machine.at(cstate); - process_char(c, cstate, pstate, get<0>(state), get<1>(state), get<2>(state)); - } - - // Trigger appropriate hooks in order to process last token, because no state transition was - // triggered for it. - if (cstate == Parser_state::prerelease) { - prerelease_hook(prerelease_id); - } else if (cstate == Parser_state::build) { - build_hook(build_id); - } - - return Version_data{stoi(major), stoi(minor), stoi(patch), prerelease, build}; -} - -} // namespace version diff --git a/lib/semver/semver200.h b/lib/semver/semver200.h deleted file mode 100644 index 5c19f07ff..000000000 --- a/lib/semver/semver200.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2015 Marko Zivanovic - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#pragma once - -#include "version.h" - -namespace version { - -/// Parse string into Version_data structure according to semantic versioning 2.0.0 rules. -struct Semver200_parser { - Version_data parse(const std::string &) const; -}; - -/// Compare Version_data to another using semantic versioning 2.0.0 rules. -struct Semver200_comparator { - int compare(const Version_data &, const Version_data &) const; -}; - -/// Concrete version class that binds all semver 2.0.0 functionality together. -class Semver200_version : public Basic_version { - public: - Semver200_version() - : Basic_version{Semver200_parser(), Semver200_comparator()} { - } - - Semver200_version(const std::string & v) - : Basic_version{v, Semver200_parser(), Semver200_comparator()} { - } -}; - -} // namespace version \ No newline at end of file diff --git a/lib/semver/version.h b/lib/semver/version.h deleted file mode 100644 index 517d6f435..000000000 --- a/lib/semver/version.h +++ /dev/null @@ -1,149 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2015 Marko Zivanovic - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#pragma once - -#include -#include - -namespace version { - -/// Type of prerelease identifier: alphanumeric or numeric. -/** - Type of identifier affects comparison: alphanumeric identifiers are compared as ASCII strings, while - numeric identifiers are compared as numbers. - */ -enum class Id_type { - alnum, ///< Identifier is alphanumerical - num ///< Identifier is numeric -}; - -/// Container for prerelease identifier value and it's type. -/** - Prerelease version string consist of an optional series of dot-separated identifiers. - These identifiers can be either numerical or alphanumerical. - This structure describes one such identifier. - */ -using Prerelease_identifier = std::pair; - -/// Container for all prerelease identifiers for a given version string. -using Prerelease_identifiers = std::vector; - -/// Build identifier is arbitrary string with no special meaning with regards to version precedence. -using Build_identifier = std::string; - -/// Container for all build identifiers of a given version string. -using Build_identifiers = std::vector; - -/// Description of version broken into parts, as per semantic versioning specification. -struct Version_data { - Version_data(const int M, const int m, const int p, const Prerelease_identifiers & pr, const Build_identifiers & b) - : major{M} - , minor{m} - , patch{p} - , prerelease_ids{pr} - , build_ids{b} { - } - - int major; ///< Major version, change only on incompatible API modifications. - int minor; ///< Minor version, change on backwards-compatible API modifications. - int patch; ///< Patch version, change only on bugfixes. - - /// Optional series of prerelease identifiers. - Prerelease_identifiers prerelease_ids; - - /// Optional series of build identifiers. - Build_identifiers build_ids; -}; - -// Forward declaration required for operators' template declarations. -template -class Basic_version; - -/// Test if left-hand version operand is of lower precedence than the right-hand version. -template -bool operator<(const Basic_version &, const Basic_version &); - -/// Test if left-hand version operand if of equal precedence as the right-hand version. -template -bool operator==(const Basic_version &, const Basic_version &); - -/// Test if left-hand version and right-hand version are of different precedence. -template -bool operator!=(const Basic_version &, const Basic_version &); - -/// Test if left-hand version operand is of higher precedence than the right-hand version. -template -bool operator>(const Basic_version &, const Basic_version &); - -/// Test if left-hand version operand is of higher or equal precedence as the right-hand version. -template -bool operator>=(const Basic_version &, const Basic_version &); - -/// Test if left-hand version operand is of lower or equal precedence as the right-hand version. -template -bool operator<=(const Basic_version &, const Basic_version &); - -/// Base class for various version parsing, precedence ordering and data manipulation schemes. -/** - Basic_version class describes general version object without prescribing parsing, - validation, comparison and modification rules. These rules are implemented by supplied Parser, Comparator - and Modifier objects. - */ -template -class Basic_version { - public: - /// Construct Basic_version object using Parser object to parse default ("0.0.0") version string, Comparator for comparison and Modifier for modification. - Basic_version(Parser, Comparator); - - /// Construct Basic_version object using Parser to parse supplied version string, Comparator for comparison and Modifier for modification. - Basic_version(const std::string &, Parser, Comparator); - - /// Construct Basic_version object using supplied Version_data, Parser, Comparator and Modifier objects. - Basic_version(const Version_data &, Parser, Comparator); - - /// Construct Basic_version by copying data from another one. - Basic_version(const Basic_version &); - - /// Copy version data from another Basic_version to this one. - Basic_version & operator=(const Basic_version &); - - int major() const; ///< Get major version. - int minor() const; ///< Get minor version. - int patch() const; ///< Get patch version. - const std::string prerelease() const; ///< Get prerelease version string. - const std::string build() const; ///< Get build version string. - - friend bool operator< <>(const Basic_version &, const Basic_version &); - friend bool operator==<>(const Basic_version &, const Basic_version &); - - private: - Parser parser_; - Comparator comparator_; - Version_data ver_; -}; - -} // namespace version - -#include "version.inl" diff --git a/lib/semver/version.inl b/lib/semver/version.inl deleted file mode 100644 index 8de18af61..000000000 --- a/lib/semver/version.inl +++ /dev/null @@ -1,132 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2015 Marko Zivanovic - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#pragma once - -#include "version.h" - -namespace version { - -namespace { - -/// Utility function to splice all vector elements to output stream, using designated separator -/// between elements and function object for getting values from vector elements. -template -std::string & splice(std::string & ss, const std::vector & vec, const std::string & sep, F read) { - if (!vec.empty()) { - for (auto it = vec.cbegin(); it < vec.cend() - 1; ++it) { - ss += read(*it) + sep; - } - ss += read(*vec.crbegin()); - } - return ss; -} - -} // namespace - -template -Basic_version::Basic_version(Parser p, Comparator c) - : parser_(p) - , comparator_(c) - , ver_(parser_.parse("0.0.0")) { -} - -template -Basic_version::Basic_version(const std::string & v, Parser p, Comparator c) - : parser_(p) - , comparator_(c) - , ver_(parser_.parse(v)) { -} - -template -Basic_version::Basic_version(const Version_data & v, Parser p, Comparator c) - : parser_(p) - , comparator_(c) - , ver_(v) { -} - -template -Basic_version::Basic_version(const Basic_version &) = default; - -template -Basic_version & Basic_version::operator=(const Basic_version &) = default; - -template -int Basic_version::major() const { - return ver_.major; -} - -template -int Basic_version::minor() const { - return ver_.minor; -} - -template -int Basic_version::patch() const { - return ver_.patch; -} - -template -const std::string Basic_version::prerelease() const { - std::string ss; - return splice(ss, ver_.prerelease_ids, ".", [](const Prerelease_identifier & id) { return id.first; }); -} - -template -const std::string Basic_version::build() const { - std::string ss; - return splice(ss, ver_.build_ids, ".", [](const std::string & id) { return id; }); -} - -template -bool operator<(const Basic_version & l, const Basic_version & r) { - return l.comparator_.compare(l.ver_, r.ver_) == -1; -} - -template -bool operator==(const Basic_version & l, const Basic_version & r) { - return l.comparator_.compare(l.ver_, r.ver_) == 0; -} - -template -inline bool operator!=(const Basic_version & l, const Basic_version & r) { - return !(l == r); -} - -template -inline bool operator>(const Basic_version & l, const Basic_version & r) { - return r < l; -} - -template -inline bool operator>=(const Basic_version & l, const Basic_version & r) { - return !(l < r); -} - -template -inline bool operator<=(const Basic_version & l, const Basic_version & r) { - return !(l > r); -} - -} // namespace version diff --git a/src/core/EMSESP_Version.h b/src/core/EMSESP_Version.h new file mode 100644 index 000000000..c9be68f61 --- /dev/null +++ b/src/core/EMSESP_Version.h @@ -0,0 +1,124 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020-2026 emsesp.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef EMSESP_Version_H +#define EMSESP_Version_H + +#include +#include +#include + +// Drop-in lightweight replacement for the subset of the semver library actually used by EMS-ESP. +// The previous semver library (lib/semver) builds a std::map + std::function-based state machine on +// every parse, which fragments the internal heap on the ESP32. This replacement does no heap +// allocation beyond the std::string member for the prerelease tag, and matches the API surface +// we consume: construction from string, major()/minor()/patch()/prerelease(), and operator>/(const EMSESP_Version & a, const EMSESP_Version & b) { + return b < a; + } + + friend bool operator==(const EMSESP_Version & a, const EMSESP_Version & b) { + return a.major_ == b.major_ && a.minor_ == b.minor_ && a.patch_ == b.patch_; + } + + friend bool operator!=(const EMSESP_Version & a, const EMSESP_Version & b) { + return !(a == b); + } + + friend bool operator>=(const EMSESP_Version & a, const EMSESP_Version & b) { + return !(a < b); + } + + friend bool operator<=(const EMSESP_Version & a, const EMSESP_Version & b) { + return !(b < a); + } + + private: + int major_ = 0; + int minor_ = 0; + int patch_ = 0; + std::string prerelease_; + + void parse(const char * s) { + major_ = minor_ = patch_ = 0; + prerelease_.clear(); + if (s == nullptr || *s == '\0') { + return; + } + // parse numeric major.minor.patch; accept partial ("3", "3.9", "3.9.0") + sscanf(s, "%d.%d.%d", &major_, &minor_, &patch_); + // capture prerelease tag after '-' if present (stop at '+' which is build metadata) + const char * dash = strchr(s, '-'); + if (dash != nullptr) { + const char * plus = strchr(dash, '+'); + if (plus != nullptr) { + prerelease_.assign(dash + 1, plus - dash - 1); + } else { + prerelease_.assign(dash + 1); + } + } + } +}; + +} // namespace version + +#endif From c3b734ab473d5751073509943ce6ea1b8dd5ae8d Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:35:57 +0200 Subject: [PATCH 120/162] add back LTO, remove semver --- platformio.ini | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 73862bf38..7f91d35df 100644 --- a/platformio.ini +++ b/platformio.ini @@ -21,8 +21,8 @@ extra_configs = pio_local.ini [common] -core_build_flags = -std=c++17 -std=gnu++17 -O3 -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers -core_unbuild_flags = -std=gnu++11 +core_build_flags = -std=c++17 -std=gnu++17 -O3 -flto=auto -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers +core_unbuild_flags = -std=gnu++11 -fno-lto my_build_flags = @@ -184,7 +184,6 @@ build_src_flags = -I./lib/uuid-common/src -I./lib/uuid-console/src -I./lib/uuid-log/src - -I./lib/semver -I./lib/PButton -I./lib/espMqttClient/src -I./lib/espMqttClient/src/Transport @@ -224,7 +223,6 @@ build_src_flags = -I./lib/uuid-common/src -I./lib/uuid-console/src -I./lib/uuid-log/src - -I./lib/semver -I./lib/PButton -I./lib/espMqttClient/src -I./lib/espMqttClient/src/Transport From 2d7c8f0863d425553f121b20720fe77396265255 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:36:08 +0200 Subject: [PATCH 121/162] remove semver --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0728ef0f6..1834389e1 100644 --- a/Makefile +++ b/Makefile @@ -47,8 +47,8 @@ MAKEFLAGS += -j$(JOBS) -l$(shell echo $$(($(JOBS) * 2))) #---------------------------------------------------------------------- TARGET := emsesp BUILD := build -SOURCES := src/core src/devices src/web src/test lib_standalone lib/semver lib/espMqttClient/src lib/espMqttClient/src/* lib/ArduinoJson/src lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src lib/PButton -INCLUDES := src/core src/devices src/web src/test lib_standalone lib/* lib/semver lib/espMqttClient/src lib/espMqttClient/src/Transport lib/ArduinoJson/src lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src lib/uuid-telnet/src lib/uuid-syslog/src +SOURCES := src/core src/devices src/web src/test lib_standalone lib/espMqttClient/src lib/espMqttClient/src/* lib/ArduinoJson/src lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src lib/PButton +INCLUDES := src/core src/devices src/web src/test lib_standalone lib/* lib/espMqttClient/src lib/espMqttClient/src/Transport lib/ArduinoJson/src lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src lib/uuid-telnet/src lib/uuid-syslog/src LIBRARIES := CPPCHECK = cppcheck From 2fbfdf94ab69b55825f0f189f52011dbd6c0f650 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:40:21 +0200 Subject: [PATCH 122/162] minor optimizations, use EMSESP_Version, only call esp_image_verify() and store the entry for partitions that actually have a value --- src/core/system.cpp | 59 +++++++++++++++++++----------------- src/web/WebStatusService.cpp | 14 ++++----- src/web/WebStatusService.h | 2 +- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 3000b50f6..d2067e81c 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -26,13 +26,12 @@ #include #include "esp_efuse.h" #include -#include #endif #include #include -#include +#include "EMSESP_Version.h" #if defined(EMSESP_TEST) #include "../test/test.h" @@ -338,15 +337,16 @@ void System::get_partition_info() { strftime(time_string, sizeof(time_string), "%FT%T", localtime(&d)); p_info.install_date = d > 1500000000L ? time_string : ""; - esp_image_metadata_t meta = {}; - esp_partition_pos_t part_pos = {.offset = part->address, .size = part->size}; - if (esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &part_pos, &meta) == ESP_OK) { - p_info.size = meta.image_len / 1024; // actual firmware size in KB - } else { - p_info.size = 0; + if (!p_info.version.empty()) { + esp_image_metadata_t meta = {}; + esp_partition_pos_t part_pos = {.offset = part->address, .size = part->size}; + if (esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &part_pos, &meta) == ESP_OK) { + p_info.size = meta.image_len / 1024; // actual firmware size in KB + } else { + p_info.size = 0; + } + partition_info_[part->label] = p_info; } - - partition_info_[part->label] = p_info; } it = esp_partition_next(it); // loop to next partition @@ -1533,8 +1533,8 @@ bool System::check_upgrade() { settingsVersion = "3.5.0"; // this was the last stable version without version info } - version::Semver200_version settings_version(settingsVersion); - version::Semver200_version this_version(EMSESP_APP_VERSION); + version::EMSESP_Version settings_version(settingsVersion); + version::EMSESP_Version this_version(EMSESP_APP_VERSION); std::string settings_version_type = settings_version.prerelease().empty() ? "" : ("-" + settings_version.prerelease()); std::string this_version_type = this_version.prerelease().empty() ? "" : ("-" + this_version.prerelease()); @@ -1685,18 +1685,17 @@ void System::exportSettings(const std::string & type, const char * filename, Jso File settingsFile = LittleFS.open(filename); if (settingsFile) { - JsonDocument jsonDocument; - DeserializationError error = deserializeJson(jsonDocument, settingsFile); - if (error == DeserializationError::Ok && jsonDocument.is()) { - JsonObject node = output[section].to(); - for (JsonPair kvp : jsonDocument.as()) { - node[kvp.key()] = kvp.value(); + { + JsonDocument jsonDocument; + DeserializationError error = deserializeJson(jsonDocument, settingsFile); + settingsFile.close(); // close early, we no longer need the file + if (error || !jsonDocument.is()) { + LOG_ERROR("Failed to deserialize settings file %s", filename); + return; } - } else { - LOG_ERROR("Failed to deserialize settings file %s", filename); + output[section].set(jsonDocument.as()); } LOG_DEBUG("Exported %s settings from file %s", section, filename); - settingsFile.close(); } else { LOG_ERROR("No settings file for %s found", filename); } @@ -1748,20 +1747,24 @@ void System::exportSystemBackup(JsonObject output) { if (file) { JsonDocument jsonDocument; DeserializationError error = deserializeJson(jsonDocument, file); - if (error == DeserializationError::Ok && jsonDocument.is()) { - JsonObject node = nodes.add(); - node["type"] = "customSupport"; - node["data"] = jsonDocument.as(); + file.close(); // close early, we no longer need the file + if (!error && jsonDocument.is()) { + JsonObject support_node = nodes.add(); + support_node["type"] = "customSupport"; + support_node["data"].set(jsonDocument.as()); + LOG_DEBUG("Exported custom support file %s", EMSESP_CUSTOMSUPPORT_FILE); + } else { + LOG_ERROR("Failed to deserialize custom support file"); } - file.close(); - LOG_DEBUG("Exported custom support file %s", EMSESP_CUSTOMSUPPORT_FILE); } // Backup NVS values node = nodes.add(); node["type"] = "nvs"; - const char * nvs_part = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, "nvs1") ? "nvs1" : "nvs"; // nvs1 is on 16MBs + // EMSESP::nvs_ is opened on "nvs" (see EMSESP::start), so always read the backup from there. + // The old "nvs1" partition may still exist on 16MB boards but has been migrated and emptied. + const char * nvs_part = "nvs"; nvs_iterator_t it = nullptr; #if ESP_IDF_VERSION_MAJOR < 5 it = nvs_entry_find(nvs_part, "ems-esp", NVS_TYPE_ANY); diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index 23f4d3486..f360ff99e 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -253,7 +253,7 @@ uint8_t WebStatusService::upgradeImportantMessages(std::string & version) { // it's a filename with a .bin or .md extension, try and extract the version from it // e.g. EMS-ESP-3_8_2-dev_13-ESP32-16MB+.bin -> major=3 minor=8 patch=2 - version::Semver200_version latest_version; + version::EMSESP_Version latest_version; if ((version.find(".bin") != std::string::npos) || (version.find(".md") != std::string::npos)) { std::string filename = version; auto pos = filename.find("EMS-ESP-"); @@ -274,18 +274,18 @@ uint8_t WebStatusService::upgradeImportantMessages(std::string & version) { std::string major_version = filename.substr(pos, underscore1 - pos); std::string minor_version = filename.substr(underscore1 + 1, underscore2 - underscore1 - 1); std::string patch_version = filename.substr(underscore2 + 1, dash - underscore2 - 1); - latest_version = version::Semver200_version(major_version + "." + minor_version + "." + patch_version); + latest_version = version::EMSESP_Version(major_version + "." + minor_version + "." + patch_version); } else { // if it's .json file exit if (version.find(".json") != std::string::npos) { return 0; } else { // treat it like a version string like "3.9.0" - latest_version = version::Semver200_version(version); + latest_version = version::EMSESP_Version(version); } } - version::Semver200_version current_version(current_version_s); // get current version + version::EMSESP_Version current_version(current_version_s); // get current version if (latest_version > current_version && current_version.minor() < latest_version.minor()) { return 0; // if it's just a minor version upgrade return 0 @@ -306,9 +306,9 @@ uint8_t WebStatusService::upgradeImportantMessages(std::string & version) { // versions holds the latest development version and stable version in one string, comma separated bool WebStatusService::checkUpgrade(JsonObject root, std::string & version) { if (!version.empty()) { - version::Semver200_version current_version(current_version_s); - version::Semver200_version latest_dev_version(version.substr(0, version.find(','))); - version::Semver200_version latest_stable_version(version.substr(version.find(',') + 1)); + version::EMSESP_Version current_version(current_version_s); + version::EMSESP_Version latest_dev_version(version.substr(0, version.find(','))); + version::EMSESP_Version latest_stable_version(version.substr(version.find(',') + 1)); bool dev_upgradeable = latest_dev_version > current_version; bool stable_upgradeable = latest_stable_version > current_version; diff --git a/src/web/WebStatusService.h b/src/web/WebStatusService.h index 8d2c69bfd..6d3f59f1a 100644 --- a/src/web/WebStatusService.h +++ b/src/web/WebStatusService.h @@ -4,7 +4,7 @@ #define EMSESP_SYSTEM_STATUS_SERVICE_PATH "/rest/systemStatus" #define EMSESP_ACTION_SERVICE_PATH "/rest/action" -#include // for version checking +#include "../core/EMSESP_Version.h" #include "../emsesp_version.h" namespace emsesp { From a810c41acdff9623023e9a185c18d8f8c3c49231 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:43:14 +0200 Subject: [PATCH 123/162] exclude js --- cspell.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cspell.json b/cspell.json index 075f7629f..4d4f9520b 100644 --- a/cspell.json +++ b/cspell.json @@ -38,6 +38,7 @@ "vite.config.ts", "lib/esp32-psram/**", "test/test_api/test_api.h", - "lib_standalone/**" + "lib_standalone/**", + "**/*.js" ] } \ No newline at end of file From a7d484d21815fb51d252b975f3633350daa2cd51 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:43:23 +0200 Subject: [PATCH 124/162] 3.8.2-dev.16 --- src/emsesp_version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 8bac1722e..ea3298f88 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.15" +#define EMSESP_APP_VERSION "3.8.2-dev.16" From 6994d3559a0d8035b8463a3393b410abd3fe368e Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:43:31 +0200 Subject: [PATCH 125/162] package update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 111 +++++++++++++++++++++------------------ 2 files changed, 61 insertions(+), 52 deletions(-) diff --git a/interface/package.json b/interface/package.json index e12e80a2a..5fd86c743 100644 --- a/interface/package.json +++ b/interface/package.json @@ -57,7 +57,7 @@ "@types/react-dom": "^19.2.3", "axe-core": "^4.11.3", "concurrently": "^9.2.1", - "eslint": "^10.2.0", + "eslint": "^10.2.1", "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.3", "rollup-plugin-visualizer": "^7.0.1", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 6d40af9a9..bb807db0f 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -80,7 +80,7 @@ importers: version: 7.29.0 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.2.0) + version: 10.0.1(eslint@10.2.1) '@preact/preset-vite': specifier: ^2.10.5 version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) @@ -103,11 +103,11 @@ importers: specifier: ^9.2.1 version: 9.2.1 eslint: - specifier: ^10.2.0 - version: 10.2.0 + specifier: ^10.2.1 + version: 10.2.1 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.2.0) + version: 10.1.8(eslint@10.2.1) prettier: specifier: ^3.8.3 version: 3.8.3 @@ -119,7 +119,7 @@ importers: version: 5.46.1 typescript-eslint: specifier: ^8.58.2 - version: 8.58.2(eslint@10.2.0)(typescript@6.0.3) + version: 8.58.2(eslint@10.2.1)(typescript@6.0.3) vite: specifier: ^8.0.8 version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) @@ -501,12 +501,16 @@ packages: resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.7': - resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': @@ -1184,8 +1188,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.19: - resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} + baseline-browser-mapping@2.10.20: + resolution: {integrity: sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1713,8 +1717,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.2.0: - resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} + eslint@10.2.1: + resolution: {integrity: sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2025,8 +2029,8 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} he@1.2.0: @@ -3714,9 +3718,9 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.1)': dependencies: - eslint: 10.2.0 + eslint: 10.2.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3737,9 +3741,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.2.0)': + '@eslint/js@10.0.1(eslint@10.2.1)': optionalDependencies: - eslint: 10.2.0 + eslint: 10.2.1 '@eslint/object-schema@3.0.5': {} @@ -3748,13 +3752,18 @@ snapshots: '@eslint/core': 1.2.1 levn: 0.4.1 - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.7': + '@humanfs/core@0.19.2': dependencies: - '@humanfs/core': 0.19.1 + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 '@humanwhocodes/retry': 0.4.3 + '@humanfs/types@0.15.0': {} + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -4187,15 +4196,15 @@ snapshots: dependencies: '@types/node': 25.6.0 - '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.58.2(eslint@10.2.1)(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/type-utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) + '@typescript-eslint/type-utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.58.2 - eslint: 10.2.0 + eslint: 10.2.1 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -4203,14 +4212,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.58.2(eslint@10.2.1)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.58.2 debug: 4.4.3 - eslint: 10.2.0 + eslint: 10.2.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4233,13 +4242,13 @@ snapshots: dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.58.2(eslint@10.2.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.58.2(eslint@10.2.1)(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) debug: 4.4.3 - eslint: 10.2.0 + eslint: 10.2.1 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -4262,13 +4271,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.58.2(eslint@10.2.1)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - eslint: 10.2.0 + eslint: 10.2.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4346,7 +4355,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.19: {} + baseline-browser-mapping@2.10.20: {} bin-build@3.0.0: dependencies: @@ -4407,7 +4416,7 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.19 + baseline-browser-mapping: 2.10.20 caniuse-lite: 1.0.30001788 electron-to-chromium: 1.5.340 node-releases: 2.0.37 @@ -4919,9 +4928,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.2.0): + eslint-config-prettier@10.1.8(eslint@10.2.1): dependencies: - eslint: 10.2.0 + eslint: 10.2.1 eslint-scope@9.1.2: dependencies: @@ -4934,15 +4943,15 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.2.0: + eslint@10.2.1: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.5.5 '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.1 - '@humanfs/node': 0.16.7 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 @@ -5190,7 +5199,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.3 math-intrinsics: 1.1.0 get-proto@1.0.1: @@ -5325,7 +5334,7 @@ snapshots: dependencies: has-symbols: 1.1.0 - hasown@2.0.2: + hasown@2.0.3: dependencies: function-bind: 1.1.2 @@ -5435,7 +5444,7 @@ snapshots: is-core-module@2.16.1: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 is-cwebp-readable@3.0.0: dependencies: @@ -6417,13 +6426,13 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.58.2(eslint@10.2.0)(typescript@6.0.3): + typescript-eslint@8.58.2(eslint@10.2.1)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/parser': 8.58.2(eslint@10.2.1)(typescript@6.0.3) '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@6.0.3) - eslint: 10.2.0 + '@typescript-eslint/utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) + eslint: 10.2.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color From 71de64502e7516f4d63f48a374ded7b821ac5eb4 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 17:52:05 +0200 Subject: [PATCH 126/162] include cstdint for uint8_t on new GCC --- src/core/emsfactory.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/emsfactory.h b/src/core/emsfactory.h index 771aad4af..3be963be0 100644 --- a/src/core/emsfactory.h +++ b/src/core/emsfactory.h @@ -19,6 +19,7 @@ #ifndef EMSESP_EMSFACTORY_H_ #define EMSESP_EMSFACTORY_H_ +#include #include // for unique_ptr #include From 2f5edffec6c1eb4cf0fa5f815469aeb4d9d9cf31 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 18:29:30 +0200 Subject: [PATCH 127/162] update changelog --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index ff1dccb29..2c15ada09 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -32,3 +32,4 @@ For more details go to [emsesp.org](https://emsesp.org/). - device class for % values [#2980](https://github.com/emsesp/EMS-ESP32/issues/2980) - fetch telegrams: set length to fetch [#3017](https://github.com/emsesp/EMS-ESP32/issues/3017) - move http client from stack to heap +- heap optimizations [#3021](https://github.com/emsesp/EMS-ESP32/discussions/3021) From 77b8b21aea43973e38c9706c2f29acb68e95ebb9 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 18:34:47 +0200 Subject: [PATCH 128/162] use C++ 20 (espressif32@6.13.0 still uses GCC 8 so only 2a supported) --- platformio.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index 7f91d35df..04c369c6a 100644 --- a/platformio.ini +++ b/platformio.ini @@ -21,8 +21,8 @@ extra_configs = pio_local.ini [common] -core_build_flags = -std=c++17 -std=gnu++17 -O3 -flto=auto -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers -core_unbuild_flags = -std=gnu++11 -fno-lto +core_build_flags = -std=c++17 -std=gnu++2a -O3 -flto=auto -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers +core_unbuild_flags = -std=gnu++11 -std=gnu++14 -std=gnu++17 -fno-lto my_build_flags = From 865c30947588903dca1b63dd967ea685a86587da Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 18:39:45 +0200 Subject: [PATCH 129/162] remove c++17 --- platformio.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platformio.ini b/platformio.ini index 04c369c6a..c649d5e8d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -21,7 +21,7 @@ extra_configs = pio_local.ini [common] -core_build_flags = -std=c++17 -std=gnu++2a -O3 -flto=auto -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers +core_build_flags = -std=gnu++2a -O3 -flto=auto -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers core_unbuild_flags = -std=gnu++11 -std=gnu++14 -std=gnu++17 -fno-lto my_build_flags = @@ -175,7 +175,7 @@ build_flags = build_src_flags = -DEMSESP_STANDALONE -DEMSESP_TEST -DARDUINOJSON_ENABLE_ARDUINO_STRING=1 - -std=gnu++17 -Og -ggdb + -std=gnu++2a -Og -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-missing-braces -Wno-vla-cxx-extension -Wno-tautological-constant-out-of-range-compare @@ -214,7 +214,7 @@ build_src_flags = -DEMSESP_UNITY -DARDUINOJSON_ENABLE_ARDUINO_STRING=1 -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" - -std=gnu++17 -Og -ggdb + -std=gnu++2a -Og -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-missing-braces -Wno-vla-cxx-extension -Wno-tautological-constant-out-of-range-compare From 6f81945da62f02cc0e9a320b5a8106185334da10 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 18 Apr 2026 18:43:03 +0200 Subject: [PATCH 130/162] typo --- src/core/system.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index d2067e81c..8fd36a633 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1762,8 +1762,6 @@ void System::exportSystemBackup(JsonObject output) { node = nodes.add(); node["type"] = "nvs"; - // EMSESP::nvs_ is opened on "nvs" (see EMSESP::start), so always read the backup from there. - // The old "nvs1" partition may still exist on 16MB boards but has been migrated and emptied. const char * nvs_part = "nvs"; nvs_iterator_t it = nullptr; #if ESP_IDF_VERSION_MAJOR < 5 From 555801dc5c95d0e657a7a50f96ce8c238dae0052 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 19 Apr 2026 10:05:47 +0200 Subject: [PATCH 131/162] remove lazy loading, optimize chunking --- interface/src/AppRouting.tsx | 68 ++++++------- interface/src/AuthenticatedRouting.tsx | 131 ++++++++++++------------- interface/vite.config.ts | 97 ++---------------- 3 files changed, 98 insertions(+), 198 deletions(-) diff --git a/interface/src/AppRouting.tsx b/interface/src/AppRouting.tsx index 91c8f0945..aee79140d 100644 --- a/interface/src/AppRouting.tsx +++ b/interface/src/AppRouting.tsx @@ -1,19 +1,13 @@ -import { type FC, Suspense, lazy, memo, useContext, useEffect, useRef } from 'react'; +import { type FC, memo, useContext, useEffect, useRef } from 'react'; import { Navigate, Route, Routes } from 'react-router'; import { toast } from 'react-toastify'; -import { - LoadingSpinner, - RequireAuthenticated, - RequireUnauthenticated -} from 'components'; +import AuthenticatedRouting from 'AuthenticatedRouting'; +import SignIn from 'SignIn'; +import { RequireAuthenticated, RequireUnauthenticated } from 'components'; import { Authentication, AuthenticationContext } from 'contexts/authentication'; import { useI18nContext } from 'i18n/i18n-react'; -// Lazy load route components for better code splitting -const SignIn = lazy(() => import('SignIn')); -const AuthenticatedRouting = lazy(() => import('AuthenticatedRouting')); - interface SecurityRedirectProps { readonly message: string; readonly signOut?: boolean; @@ -45,34 +39,32 @@ const AppRouting: FC = memo(() => { return ( - }> - - } - /> - } - /> - - - - } - /> - - - - } - /> - - + + } + /> + } + /> + + + + } + /> + + + + } + /> + ); }); diff --git a/interface/src/AuthenticatedRouting.tsx b/interface/src/AuthenticatedRouting.tsx index 1be5b0f49..8ace232aa 100644 --- a/interface/src/AuthenticatedRouting.tsx +++ b/interface/src/AuthenticatedRouting.tsx @@ -1,86 +1,77 @@ -import { Suspense, lazy, memo, useContext } from 'react'; +import { memo, useContext } from 'react'; import { Navigate, Route, Routes } from 'react-router'; -import { Layout, LoadingSpinner } from 'components'; +import CustomEntities from 'app/main/CustomEntities'; +import Customizations from 'app/main/Customizations'; +import Dashboard from 'app/main/Dashboard'; +import Devices from 'app/main/Devices'; +import Help from 'app/main/Help'; +import Modules from 'app/main/Modules'; +import Scheduler from 'app/main/Scheduler'; +import Sensors from 'app/main/Sensors'; +import UserProfile from 'app/main/UserProfile'; +import APSettings from 'app/settings/APSettings'; +import ApplicationSettings from 'app/settings/ApplicationSettings'; +import DownloadUpload from 'app/settings/DownloadUpload'; +import MqttSettings from 'app/settings/MqttSettings'; +import NTPSettings from 'app/settings/NTPSettings'; +import Settings from 'app/settings/Settings'; +import Network from 'app/settings/network/Network'; +import Security from 'app/settings/security/Security'; +import APStatus from 'app/status/APStatus'; +import Activity from 'app/status/Activity'; +import HardwareStatus from 'app/status/HardwareStatus'; +import MqttStatus from 'app/status/MqttStatus'; +import NTPStatus from 'app/status/NTPStatus'; +import NetworkStatus from 'app/status/NetworkStatus'; +import Status from 'app/status/Status'; +import SystemLog from 'app/status/SystemLog'; +import Version from 'app/status/Version'; +import { Layout } from 'components'; import { AuthenticatedContext } from 'contexts/authentication'; -// Lazy load all route components for better code splitting -const Dashboard = lazy(() => import('app/main/Dashboard')); -const Devices = lazy(() => import('app/main/Devices')); -const Sensors = lazy(() => import('app/main/Sensors')); -const Help = lazy(() => import('app/main/Help')); -const Customizations = lazy(() => import('app/main/Customizations')); -const Scheduler = lazy(() => import('app/main/Scheduler')); -const CustomEntities = lazy(() => import('app/main/CustomEntities')); -const Modules = lazy(() => import('app/main/Modules')); -const UserProfile = lazy(() => import('app/main/UserProfile')); - -const Status = lazy(() => import('app/status/Status')); -const HardwareStatus = lazy(() => import('app/status/HardwareStatus')); -const Activity = lazy(() => import('app/status/Activity')); -const SystemLog = lazy(() => import('app/status/SystemLog')); -const MqttStatus = lazy(() => import('app/status/MqttStatus')); -const NTPStatus = lazy(() => import('app/status/NTPStatus')); -const APStatus = lazy(() => import('app/status/APStatus')); -const NetworkStatus = lazy(() => import('app/status/NetworkStatus')); -const Version = lazy(() => import('app/status/Version')); - -const Settings = lazy(() => import('app/settings/Settings')); -const ApplicationSettings = lazy(() => import('app/settings/ApplicationSettings')); -const MqttSettings = lazy(() => import('app/settings/MqttSettings')); -const NTPSettings = lazy(() => import('app/settings/NTPSettings')); -const APSettings = lazy(() => import('app/settings/APSettings')); -const DownloadUpload = lazy(() => import('app/settings/DownloadUpload')); -const Network = lazy(() => import('app/settings/network/Network')); -const Security = lazy(() => import('app/settings/security/Security')); - const AuthenticatedRouting = memo(() => { const { me } = useContext(AuthenticatedContext); return ( - }> - - } /> - } /> - } /> - } /> - } /> + + } /> + } /> + } /> + } /> + } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> - {me.admin && ( - <> - } /> - } - /> - } /> - } /> - } /> - } /> - } /> + {me.admin && ( + <> + } /> + } /> + } /> + } /> + } /> + } /> + } /> - } /> - } /> + } /> + } /> - } /> - } /> - } /> - - )} + } /> + } /> + } /> + + )} - } /> - - + } /> + ); }); diff --git a/interface/vite.config.ts b/interface/vite.config.ts index 5c288677c..ff34966b7 100644 --- a/interface/vite.config.ts +++ b/interface/vite.config.ts @@ -15,7 +15,7 @@ const REPEAT_CHAR = '='; const REPEAT_COUNT = 50; const DEFAULT_OUT_DIR = 'dist'; const ES_TARGET = 'es2020'; -const CHUNK_SIZE_WARNING_LIMIT = 512; +const CHUNK_SIZE_WARNING_LIMIT = 1024; const ASSETS_INLINE_LIMIT = 4096; // Common resolve aliases @@ -130,87 +130,11 @@ const createBasePlugins = ( return plugins; }; -// Manual chunk splitting strategy -const createManualChunks = (detailed = false) => { - return (id: string): string | undefined => { - if (id.includes('node_modules')) { - if (id.includes('preact')) return '@preact'; - if (detailed) { - if (id.includes('react-router')) return '@react-router'; - if (id.includes('@mui/material')) return '@mui-material'; - if (id.includes('@mui/icons-material')) return '@mui-icons'; - if (id.includes('alova')) return '@alova'; - if (id.includes('typesafe-i18n')) return '@i18n'; - if (id.includes('react-toastify')) return '@toastify'; - if (id.includes('@table-library')) return '@table-library'; - if (id.includes('uuid')) return '@uuid'; - if (id.includes('axios') || id.includes('fetch')) return '@http'; - if (id.includes('lodash') || id.includes('ramda')) return '@utils'; - } - return 'vendor'; - } - if (detailed) { - // Group circularly dependent modules together to avoid circular chunk warnings - // components, app, and utils are tightly coupled, so combine them - if ( - id.includes('components/') || - id.includes('app/') || - id.includes('utils/') - ) { - return 'app'; - } - // Keep api separate as it's typically more independent - if (id.includes('api/')) return 'api'; - } - return undefined; - }; +const manualChunks = (id: string): string | undefined => { + if (id.includes('node_modules')) return 'vendor'; + return undefined; }; -// Rolldown-native codeSplitting groups for the production build. -// See: https://rolldown.rs/reference/outputoptions.codesplitting -const createRolldownCodeSplitting = () => ({ - groups: [ - { name: '@preact', test: /[\\/]node_modules[\\/].*preact/, priority: 100 }, - { - name: '@react-router', - test: /[\\/]node_modules[\\/].*react-router/, - priority: 95 - }, - { - name: '@mui-material', - test: /[\\/]node_modules[\\/]@mui[\\/]material/, - priority: 95 - }, - { - name: '@mui-icons', - test: /[\\/]node_modules[\\/]@mui[\\/]icons-material/, - priority: 95 - }, - { name: '@alova', test: /[\\/]node_modules[\\/].*alova/, priority: 90 }, - { name: '@i18n', test: /[\\/]node_modules[\\/].*typesafe-i18n/, priority: 90 }, - { - name: '@toastify', - test: /[\\/]node_modules[\\/].*react-toastify/, - priority: 90 - }, - { - name: '@table-library', - test: /[\\/]node_modules[\\/]@table-library/, - priority: 90 - }, - { name: 'vendor', test: /[\\/]node_modules[\\/]/, priority: 10 }, - // Collapse the lazy-loaded route stubs + shared app/components/utils - // code into one chunk. This cuts firmware-side route count roughly in - // half and speeds up route-matching on every incoming HTTP request. - { - name: 'app', - test: /[\\/](app|components|utils)[\\/]/, - priority: 5 - }, - { name: 'api', test: /[\\/]api[\\/]/, priority: 5 } - ] -}); - // Common build base configuration const createBaseBuildConfig = () => ({ target: ES_TARGET, @@ -335,7 +259,7 @@ export default defineConfig( moduleSideEffects: false }, output: { - manualChunks: createManualChunks(false) + manualChunks } } } @@ -375,17 +299,10 @@ export default defineConfig( chunkFileNames: 'assets/[name]-[hash].js', entryFileNames: 'assets/[name]-[hash].js', assetFileNames: 'assets/[name]-[hash].[ext]', - // Kept as a no-op for documentation/fallback. With Vite 8 - manualChunks: createManualChunks(true), + manualChunks, sourcemap: false } - }, - rolldownOptions: { - output: { - codeSplitting: createRolldownCodeSplitting() - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } as any + } } }; } From c54da188223f177fe44d8e21603d83c69495cb12 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 19 Apr 2026 13:40:51 +0200 Subject: [PATCH 132/162] remove pr#3021 --- src/ESP32React/ArduinoJsonJWT.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/ESP32React/ArduinoJsonJWT.cpp b/src/ESP32React/ArduinoJsonJWT.cpp index 7e7676af5..bbc2b11ac 100644 --- a/src/ESP32React/ArduinoJsonJWT.cpp +++ b/src/ESP32React/ArduinoJsonJWT.cpp @@ -70,16 +70,12 @@ void ArduinoJsonJWT::parseJWT(String jwt, JsonDocument & jsonDocument) { */ String ArduinoJsonJWT::sign(String & payload) { std::array hmacResult{}; - { - mbedtls_md_context_t ctx; - mbedtls_md_type_t md_type = MBEDTLS_MD_SHA256; - mbedtls_md_init(&ctx); - mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(md_type), 1); - mbedtls_md_hmac_starts(&ctx, reinterpret_cast(_secret.c_str()), _secret.length()); - mbedtls_md_hmac_update(&ctx, reinterpret_cast(payload.c_str()), payload.length()); - mbedtls_md_hmac_finish(&ctx, hmacResult.data()); - mbedtls_md_free(&ctx); - } + mbedtls_md_hmac(mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), + reinterpret_cast(_secret.c_str()), + _secret.length(), + reinterpret_cast(payload.c_str()), + payload.length(), + hmacResult.data()); return encode(reinterpret_cast(hmacResult.data()), hmacResult.size()); } From e6c173bdf922ebd4195e2ac44e15c58a9ce96db3 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 19 Apr 2026 15:11:29 +0200 Subject: [PATCH 133/162] don't show system backup as it's the same page! --- interface/src/components/upload/DragNdrop.tsx | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/interface/src/components/upload/DragNdrop.tsx b/interface/src/components/upload/DragNdrop.tsx index fdcc0cc9d..0305b9492 100644 --- a/interface/src/components/upload/DragNdrop.tsx +++ b/interface/src/components/upload/DragNdrop.tsx @@ -213,19 +213,8 @@ const DragNdrop = ({ text, onFileSelected }: DragNdropProps) => { {upgradeImportantMessageType === 2 && LL.UPGRADE_IMPORTANT_MESSAGES_2()} - {upgradeImportantMessageType === 1 && ( - <> - {LL.UPGRADE_IMPORTANT_MESSAGES_1()} - - - {LL.DOWNLOAD_SYSTEM_BACKUP()} - - - - )}{' '} + {upgradeImportantMessageType === 1 && + LL.UPGRADE_IMPORTANT_MESSAGES_1()} Date: Sun, 19 Apr 2026 15:11:41 +0200 Subject: [PATCH 134/162] close dialog after downloading --- interface/src/app/settings/DownloadUpload.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/src/app/settings/DownloadUpload.tsx b/interface/src/app/settings/DownloadUpload.tsx index 6905c92b9..02a373e12 100644 --- a/interface/src/app/settings/DownloadUpload.tsx +++ b/interface/src/app/settings/DownloadUpload.tsx @@ -112,6 +112,7 @@ const DownloadUpload = () => { const handleDownload = useCallback( (type: string) => () => { void sendExportData(type); + setConfirmBackup(false); }, [sendExportData] ); From 6b68cb7c61466c3947f9c08085c85ba95d585cee Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 19 Apr 2026 15:12:22 +0200 Subject: [PATCH 135/162] store UTC epoch time and convert to localtime when render (fixes bug as TZ not set) --- interface/src/i18n/cz/index.ts | 4 ++-- interface/src/i18n/de/index.ts | 4 ++-- interface/src/i18n/en/index.ts | 4 ++-- interface/src/i18n/fr/index.ts | 4 ++-- interface/src/i18n/it/index.ts | 4 ++-- interface/src/i18n/nl/index.ts | 4 ++-- interface/src/i18n/no/index.ts | 4 ++-- interface/src/i18n/pl/index.ts | 4 ++-- interface/src/i18n/sk/index.ts | 4 ++-- interface/src/i18n/sv/index.ts | 4 ++-- interface/src/i18n/tr/index.ts | 2 +- src/core/system.cpp | 27 ++++++++++++++++----------- src/core/system.h | 2 +- src/web/WebStatusService.cpp | 21 +++++++++++++++------ 14 files changed, 53 insertions(+), 39 deletions(-) diff --git a/interface/src/i18n/cz/index.ts b/interface/src/i18n/cz/index.ts index 28b958301..fbce09041 100644 --- a/interface/src/i18n/cz/index.ts +++ b/interface/src/i18n/cz/index.ts @@ -350,7 +350,7 @@ const cz: Translation = { NO_DATA_1: 'Nebyly nalezeny žádné oblíbené entity. Použijte modul', NO_DATA_2: 'pro jejich výběr.', NO_DATA_3: 'Pro zobrazení všech dostupných entit navštivte stránku', - NO_GPIO:'Nebylo nalezeno žádné volné GPIO', + NO_GPIO: 'Nebylo nalezeno žádné volné GPIO', THIS_VERSION: 'Tato verze', PLATFORM: 'Platforma', RELEASE_TYPE: 'Typ sestavení', @@ -362,7 +362,7 @@ const cz: Translation = { STORED_VERSIONS: 'Uložené verze', ONLINE_HELP: 'online nápověda', UPGRADE_IMPORTANT_MESSAGES: 'Aktualizovat důležité zprávy', - UPGRADE_IMPORTANT_MESSAGES_1: 'Tato aktualizace vyžaduje obnovení továrního nastavení. Ujistěte se, že jste vytvořili zálohu své konfigurace a nastavení před pokračováním a nahrajte ji po instalaci nové verze.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Tato aktualizace vyžaduje obnovení továrního nastavení. Ujistěte se, že nejprve stáhnete systémovou zálohu před pokračováním a poté nahrajte tento soubor po instalaci nové verze.', UPGRADE_IMPORTANT_MESSAGES_2: 'Aktualizujete se na novou hlavní verzi. Ujistěte se, že jste přečetli ChangeLog pro jakékoliv závažné změny.', WARNING_SYSTEM_BACKUP: 'Toto vytvoří zálohu vašich celých systémových konfigurací a nastavení. Všechna hesla budou v zálohovém souboru čitelná. Buďte opatrní při sdílení! Opravdu chcete pokračovat?' diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index e8d17c01b..4a9710e1d 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -350,7 +350,7 @@ const de: Translation = { NO_DATA_1: 'Keine favorisierten EMS-Entitäten gefunden! Verwenden Sie das Modul', NO_DATA_2: ', um sie zu markieren.', NO_DATA_3: 'Um alle verfügbaren Entitäten anzuzeigen, gehen Sie zu', - NO_GPIO:'Keine freien GPIO gefunden', + NO_GPIO: 'Keine freien GPIO gefunden', THIS_VERSION: 'Diese Version', PLATFORM: 'Plattform', RELEASE_TYPE: 'Release Typ', @@ -362,7 +362,7 @@ const de: Translation = { STORED_VERSIONS: 'Gespeicherte Versionen', ONLINE_HELP: 'Online-Hilfe', UPGRADE_IMPORTANT_MESSAGES: 'Wichtige Nachrichten aktualisieren', - UPGRADE_IMPORTANT_MESSAGES_1: 'Diese Aktualisierung erfordert eine Werkseinstellung. Stellen Sie sicher, dass Sie eine Sicherung Ihrer Konfiguration und Einstellungen vor dem Fortfahren erstellt haben und diese nach der Installation der neuen Version hochladen.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Diese Aktualisierung erfordert eine Werkseinstellung. Stellen Sie sicher, dass Sie zuerst eine Systemsicherung herunterladen, bevor Sie fortfahren, und laden Sie diese Datei dann nach der Installation der neuen Version hoch.', UPGRADE_IMPORTANT_MESSAGES_2: 'Sie aktualisieren auf eine neue Hauptversion. Stellen Sie sicher, dass Sie den ChangeLog für alle wichtigen Änderungen gelesen haben.', WARNING_SYSTEM_BACKUP: 'Dies wird eine Sicherung Ihrer vollständigen Systemkonfiguration und -einstellungen erstellen. Alle Passwörter werden im Sicherungsdatei lesbar sein. Seien Sie vorsichtig beim Teilen! Möchten Sie fortfahren?' diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index 0c116d399..610ed0f00 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -350,7 +350,7 @@ const en: Translation = { NO_DATA_1: 'No favorite EMS entities found yet. Use the', NO_DATA_2: 'module to mark them.', NO_DATA_3: 'To see all available entities go to', - NO_GPIO:'No available GPIO found', + NO_GPIO: 'No available GPIO found', THIS_VERSION: 'This Version', PLATFORM: 'Platform', RELEASE_TYPE: 'Release Type', @@ -362,7 +362,7 @@ const en: Translation = { STORED_VERSIONS: 'Stored Versions', ONLINE_HELP: 'online help', UPGRADE_IMPORTANT_MESSAGES: 'Upgrade Important Messages', - UPGRADE_IMPORTANT_MESSAGES_1: 'This upgrade requires a factory reset. Make sure you have made a backup of your configuration and settings before continuing, and upload this after the new version is installed.', + UPGRADE_IMPORTANT_MESSAGES_1: 'This upgrade requires a factory reset. Make sure you first download a System Backup before continuing, and then upload this file after the new version is installed.', UPGRADE_IMPORTANT_MESSAGES_2: 'You are upgrading to a new major version. Make sure you have read the ChangeLog for any breaking changes.', WARNING_SYSTEM_BACKUP: 'This will create a backup of your full system configuration and settings. All passwords will be readable in the backup file. Be careful with sharing! Do you want to continue?' diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index 528c83bd9..f1945d2ab 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -350,7 +350,7 @@ const fr: Translation = { NO_DATA_1: 'Aucune entité EMS favorite trouvée. Utilisez le', NO_DATA_2: 'module pour les marquer.', NO_DATA_3: 'Pour voir toutes les entités disponibles, aller à', - NO_GPIO:"Aucun GPIO disponible n'a été détecté", + NO_GPIO: "Aucun GPIO disponible n'a été détecté", THIS_VERSION: 'Cette version', PLATFORM: 'Plateforme', RELEASE_TYPE: 'Type de version', @@ -362,7 +362,7 @@ const fr: Translation = { STORED_VERSIONS: 'Versions stockées', ONLINE_HELP: 'aide en ligne', UPGRADE_IMPORTANT_MESSAGES: 'Mettre à jour les messages importants', - UPGRADE_IMPORTANT_MESSAGES_1: 'Cette mise à jour nécessite une réinitialisation de fabrique. Assurez-vous d\'avoir créé une sauvegarde de vos configurations et paramètres avant de continuer et de la charger après l\'installation de la nouvelle version.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Cette mise à jour nécessite une réinitialisation de fabrique. Assurez-vous de télécharger une sauvegarde système avant de continuer, et de la charger après l\'installation de la nouvelle version.', UPGRADE_IMPORTANT_MESSAGES_2: 'Vous mettez à jour vers une nouvelle version majeure. Assurez-vous de lire le ChangeLog pour tout changement important.', WARNING_SYSTEM_BACKUP: 'Cela créera une sauvegarde de votre configuration et paramètres complets. Tous les mots de passe seront lisibles dans le fichier de sauvegarde. Soyez prudent avec le partage ! Voulez-vous continuer ?' diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index 04fe977d2..df8b4de61 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -350,7 +350,7 @@ const it: Translation = { NO_DATA_1: 'Nessuna entità EMS preferita trovata. Usa il', NO_DATA_2: 'modulo per marcarle.', NO_DATA_3: 'Per vedere tutte le entità disponibili vai a', - NO_GPIO:'Non è stato trovato alcun GPIO disponibile', + NO_GPIO: 'Non è stato trovato alcun GPIO disponibile', THIS_VERSION: 'Questa versione', PLATFORM: 'Piattaforma', RELEASE_TYPE: 'Tipo di rilascio', @@ -362,7 +362,7 @@ const it: Translation = { STORED_VERSIONS: 'Versioni memorizzate', ONLINE_HELP: 'aiuto online', UPGRADE_IMPORTANT_MESSAGES: 'Aggiorna Messaggi Importanti', - UPGRADE_IMPORTANT_MESSAGES_1: 'Questa aggiornamento richiede un ripristino di fabbrica. Assicurati di aver creato un backup delle tue configurazioni e impostazioni prima di continuare e di caricarlo dopo l\'installazione della nuova versione.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Questa aggiornamento richiede un ripristino di fabbrica. Assicurati di prima scaricare un backup del sistema prima di continuare, e poi caricare questo file dopo l\'installazione della nuova versione.', UPGRADE_IMPORTANT_MESSAGES_2: 'Stai aggiornando a una nuova versione principale. Assicurati di aver letto il ChangeLog per qualsiasi cambiamento importante.', WARNING_SYSTEM_BACKUP: 'Questo creerà un backup delle tue configurazioni e impostazioni complete. Tutte le password saranno leggibili nel file di backup. Sei sicuro di voler continuare?' diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index 70176a084..888c033d8 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -350,7 +350,7 @@ const nl: Translation = { NO_DATA_1: 'Er zijn nog geen favoriete EMS-entiteiten gevonden. Gebruik de', NO_DATA_2: 'module om ze te markeren.', NO_DATA_3: 'Om alle beschikbare entiteiten te zien, ga naar', - NO_GPIO:'Er is geen beschikbare GPIO gevonden', + NO_GPIO: 'Er is geen beschikbare GPIO gevonden', THIS_VERSION: 'Deze Versie', PLATFORM: 'Platform', RELEASE_TYPE: 'Release Typ', @@ -362,7 +362,7 @@ const nl: Translation = { STORED_VERSIONS: 'Opgeslagen versies', ONLINE_HELP: 'online help', UPGRADE_IMPORTANT_MESSAGES: 'Upgrade Belangrijke Berichten', - UPGRADE_IMPORTANT_MESSAGES_1: 'Deze upgrade vereist een fabrieksinstelling. Zorg ervoor dat u een back-up van uw configuratie en instellingen hebt gemaakt voordat u doorgaat en upload deze na de installatie van de nieuwe versie.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Deze upgrade vereist een fabrieksinstelling. Zorg ervoor dat u eerst een Systeem Backup download voordat u doorgaat, en upload deze file na de installatie van de nieuwe versie.', UPGRADE_IMPORTANT_MESSAGES_2: 'U updatet naar een nieuwe grote versie. Zorg ervoor dat u de ChangeLog hebt gelezen voor alle brekende wijzigingen.', WARNING_SYSTEM_BACKUP: 'Dit zal een back-up van uw volledige systeemconfiguratie en instellingen maken. Alle wachtwoorden zijn leesbaar in het back-upbestand. Wees voorzichtig bij delen! Wilt u doorgaan?' diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index f37f87d99..693ef29e8 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -350,7 +350,7 @@ const no: Translation = { NO_DATA_1: 'Ingen favoritte EMS enheter funnet enda. Bruk', NO_DATA_2: 'modul for å markere dem.', NO_DATA_3: 'For å se alle tilgjengelige enheter, gå til', - NO_GPIO:'Det ble ikke funnet noen tilgjengelige GPIO-porter', + NO_GPIO: 'Det ble ikke funnet noen tilgjengelige GPIO-porter', THIS_VERSION: 'Denne versjonen', PLATFORM: 'Plattform', RELEASE_TYPE: 'Utgivelses type', @@ -362,7 +362,7 @@ const no: Translation = { STORED_VERSIONS: 'Lagret versjoner', ONLINE_HELP: 'online hjelp', UPGRADE_IMPORTANT_MESSAGES: 'Oppdater viktige meldinger', - UPGRADE_IMPORTANT_MESSAGES_1: 'Denne oppdateringen krever en fabriksinstilling. Sørg for at du har laget en sikkerhetskopi av din konfigurasjon og innstillinger før du fortsetter, og last denne opp etter at den nye versjonen er installert.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Denne oppdateringen krever en fabriksinstilling. Sørg for at du først lastet ned en System Backup før du fortsetter, og last denne filen etter at den nye versjonen er installert.', UPGRADE_IMPORTANT_MESSAGES_2: 'Du oppdaterer til en ny hovedversjon. Sørg for at du har lest ChangeLog for eventuelle bruddende endringer.', WARNING_SYSTEM_BACKUP: 'Dette vil lage en sikkerhetskopi av din fullstendige systemkonfigurasjon og innstillinger. Alle passord vil være lesbare i sikkerhetskopien. Vær forsiktig med deling! Vil du fortsette?' diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 5a279ba93..c6dd004de 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -350,7 +350,7 @@ const pl: BaseTranslation = { NO_DATA_1: 'Brak ulubionych encji EMS. Użyj', NO_DATA_2: 'moduł do ich oznaczenia.', NO_DATA_3: 'Aby zobaczyć wszystkie dostępne encje przejdź do', - NO_GPIO:'Nie znaleziono dostępnych pinów GPIO', + NO_GPIO: 'Nie znaleziono dostępnych pinów GPIO', THIS_VERSION: 'Ta wersja', PLATFORM: 'Platforma', RELEASE_TYPE: 'Typ wydania', @@ -362,7 +362,7 @@ const pl: BaseTranslation = { STORED_VERSIONS: 'Zapisane wersje', ONLINE_HELP: 'pomoc online', UPGRADE_IMPORTANT_MESSAGES: 'Aktualizuj ważne wiadomości', - UPGRADE_IMPORTANT_MESSAGES_1: 'Ta aktualizacja wymaga resetu fabrycznego. Upewnij się, że masz utworzoną kopię swoich ustawień i konfiguracji przed kontynuowaniem i przesuń ją po zainstalowaniu nowej wersji.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Ta aktualizacja wymaga resetu fabrycznego. Upewnij się, że najpierw pobierzesz kopię zapasową systemu przed kontynuowaniem, a następnie przesuń tę plik po zainstalowaniu nowej wersji.', UPGRADE_IMPORTANT_MESSAGES_2: 'Aktualizujesz się do nowej głównej wersji. Upewnij się, że przeczytałeś ChangeLog dla wszelkich istotnych zmian.', WARNING_SYSTEM_BACKUP: 'To spowoduje utworzenie kopii zapasowej całej konfiguracji i ustawień systemu. Wszystkie hasła będą widoczne w pliku kopii zapasowej. Bądź ostrożny przy udostępnianiu! Chcesz kontynuować?' diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index be742048f..5e993e998 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -350,7 +350,7 @@ const sk: Translation = { NO_DATA_1: 'Nenašli sa žiadne obľúbené entity EMS. Použite', NO_DATA_2: 'modul na ich označenie.', NO_DATA_3: 'Ak chcete zobraziť všetky dostupné entity, prejdite na', - NO_GPIO:'Nebol nájdený žiadny dostupný GPIO', + NO_GPIO: 'Nebol nájdený žiadny dostupný GPIO', THIS_VERSION: 'Táto verzia', PLATFORM: 'Platforma', RELEASE_TYPE: 'Typ vydania', @@ -362,7 +362,7 @@ const sk: Translation = { STORED_VERSIONS: 'Uložené verzie', ONLINE_HELP: 'online pomoc', UPGRADE_IMPORTANT_MESSAGES: 'Aktualizovať dôležité správy', - UPGRADE_IMPORTANT_MESSAGES_1: 'Táto aktualizácia vyžaduje reštart základných nastavení. Uistite sa, že ste vytvorili zálohu svojich konfigurácií a nastavení pred pokračovaním a nahrajte ju po instalácii novej verzie.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Táto aktualizácia vyžaduje reštart základných nastavení. Uistite sa, že najprv stiahnete systémovú zálohu pred pokračovaním, a potom nahrajte tento súbor po instalácii novej verzie.', UPGRADE_IMPORTANT_MESSAGES_2: 'Aktualizujete sa na novú hlavnú verziu. Uistite sa, že ste prečítali ChangeLog pre akékoľvek dôležité zmeny.', WARNING_SYSTEM_BACKUP: 'Toto vytvorí zálohu všetkých vašich celých systémových konfigurácií a nastavení. Všetky hesla budú čitateľné v zálohovom súbore. Buďte opatrní pri zdieľaní! Chcete pokračovať?' diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index c980a54fd..032eeb026 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -350,7 +350,7 @@ const sv: Translation = { NO_DATA_1: 'Inga favorit EMS enheter hittade än. Använd', NO_DATA_2: 'modul för att markera dem.', NO_DATA_3: 'För att se alla tillgängliga enheter, gå till', - NO_GPIO:'Inga tillgängliga GPIO-portar hittades', + NO_GPIO: 'Inga tillgängliga GPIO-portar hittades', THIS_VERSION: 'Denna version', PLATFORM: 'Plattform', RELEASE_TYPE: 'Utgivelsestyp', @@ -362,7 +362,7 @@ const sv: Translation = { STORED_VERSIONS: 'Lagrad versioner', ONLINE_HELP: 'online hjälp', UPGRADE_IMPORTANT_MESSAGES: 'Uppdatera viktiga meddelanden', - UPGRADE_IMPORTANT_MESSAGES_1: 'Denna uppdatering kräver en fabriksåterställning. Se till att du har gjort en säkerhetskopia av din konfiguration och inställningar innan du fortsätter och ladda upp denna efter att den nya versionen är installerad.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Denna uppdatering kräver en fabriksåterställning. Se till att du först laddar ned en System Backup innan du fortsätter, och ladda upp denna fil efter att den nya versionen är installerad.', UPGRADE_IMPORTANT_MESSAGES_2: 'Du uppdaterar till en ny huvudversion. Se till att du har läst ChangeLog för eventuella brkande ändringar.', WARNING_SYSTEM_BACKUP: 'Detta kommer att skapa en säkerhetskopia av din fullständiga systemkonfiguration och inställningar. Alla lösenord kommer att vara läsbara i säkerhetskopien. Var försiktig med att dela! Vill du fortsätta?' diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index 154115d6a..b6caa3238 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -350,7 +350,7 @@ const tr: Translation = { NO_DATA_1: 'Henüz bir favori EMS varlığı bulunamadı. Kullanın', NO_DATA_2: 'modülünü kullanın.', NO_DATA_3: 'Tüm kullanılabilir varlıkları görmek için git', - NO_GPIO:'Kullanılabilir GPIO bulunamadı', + NO_GPIO: 'Kullanılabilir GPIO bulunamadı', THIS_VERSION: 'Bu Sürüm', PLATFORM: 'Platforma', RELEASE_TYPE: 'Sürüm Tipi', diff --git a/src/core/system.cpp b/src/core/system.cpp index 8fd36a633..6478465b2 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -288,11 +288,11 @@ void System::get_partition_info() { partition_info_.clear(); // clear existing data #ifdef EMSESP_STANDALONE - // dummy data for standalone mode - version, size, install_date - partition_info_["app0"] = {EMSESP_APP_VERSION, 0, ""}; - partition_info_["app1"] = {"", 0, ""}; - partition_info_["factory"] = {"", 0, ""}; - partition_info_["boot"] = {"", 0, ""}; + // dummy data for standalone mode - version, size, install_date in UTC epoch + partition_info_["app0"] = {EMSESP_APP_VERSION, 0, 0}; + partition_info_["app1"] = {"", 0, 0}; + partition_info_["factory"] = {"", 0, 0}; + partition_info_["boot"] = {"", 0, 0}; #else auto current_partition = (const char *)esp_ota_get_running_partition()->label; @@ -332,10 +332,8 @@ void System::get_partition_info() { p_info.version = EMSESP::nvs_.getString(part->label, "").c_str(); char c[20]; snprintf(c, sizeof(c), "d_%s", (const char *)part->label); - time_t d = EMSESP::nvs_.getULong(c, 0); - char time_string[25]; - strftime(time_string, sizeof(time_string), "%FT%T", localtime(&d)); - p_info.install_date = d > 1500000000L ? time_string : ""; + time_t d = EMSESP::nvs_.getULong(c, 0); + p_info.install_date = d > 1500000000L ? d : 0; // store UTC epoch; formatted to local time at render if (!p_info.version.empty()) { esp_image_metadata_t meta = {}; @@ -355,7 +353,7 @@ void System::get_partition_info() { #endif } -// set NTP install time/date for the current partition +// set install time/date for the current partition, in UTC // assumes NTP is connected and working void System::set_partition_install_date() { #ifndef EMSESP_STANDALONE @@ -1240,11 +1238,18 @@ void System::show_system(uuid::console::Shell & shell) { if (partition.second.version.empty()) { continue; // no version, empty string } + std::string installed; + if (partition.second.install_date > 0) { + char time_string[25]; + time_t d = partition.second.install_date; + strftime(time_string, sizeof(time_string), "%FT%T", localtime(&d)); + installed = std::string(", installed on ") + time_string; + } shell.printfln(" %s: v%s (%d KB%s) %s", partition.first.c_str(), partition.second.version.c_str(), partition.second.size, - partition.second.install_date.empty() ? "" : (std::string(", installed on ") + partition.second.install_date).c_str(), + installed.c_str(), (strcmp(esp_ota_get_running_partition()->label, partition.first.c_str()) == 0) ? "** active **" : ""); } diff --git a/src/core/system.h b/src/core/system.h index d05645a37..b3ee3c242 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -83,7 +83,7 @@ enum FUSE_VALUE : uint8_t { ALL = 0, MFG = 1, MODEL = 2, BOARD = 3, REV = 4, BAT struct PartitionInfo { std::string version; size_t size; - std::string install_date; // optional, only available if NTP is connected + time_t install_date; // UTC epoch seconds; 0 if unknown. Format with localtime() at render time so it honors the current TZ. }; class System { diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index f360ff99e..aa66292b1 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -146,18 +146,27 @@ void WebStatusService::systemStatus(AsyncWebServerRequest * request) { } // get the partition info for each partition, including the running one - // the partition data is done once in System::start() and stored in partition_info_ + // the partition data is gathered once in System::start() and stored in partition_info_ + // install_date is stored as a UTC epoch and formatted to local time here so it honors + // the current TZ (which may not have been set yet when System::start() ran). JsonArray partitions = root["partitions"].to(); for (const auto & partition : EMSESP::system_.partition_info_) { // Skip partition if it has no version, or it's size is 0 if (partition.second.version.empty() || partition.second.size == 0) { continue; } - JsonObject part = partitions.add(); - part["partition"] = partition.first; - part["version"] = partition.second.version; - part["size"] = partition.second.size; - part["install_date"] = partition.second.install_date; + JsonObject part = partitions.add(); + part["partition"] = partition.first; + part["version"] = partition.second.version; + part["size"] = partition.second.size; + if (partition.second.install_date > 0) { + char time_string[25]; + time_t d = partition.second.install_date; + strftime(time_string, sizeof(time_string), "%FT%T", localtime(&d)); + part["install_date"] = time_string; + } else { + part["install_date"] = ""; + } } root["developer_mode"] = EMSESP::system_.developer_mode(); From ece08d96ee8c93197c734f7313041719c9017488 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 19 Apr 2026 19:09:45 +0200 Subject: [PATCH 136/162] build_webUI -> build-webUI --- .github/workflows/dev_release.yml | 2 +- .github/workflows/stable_release.yml | 2 +- .github/workflows/test_release.yml | 2 +- interface/package.json | 2 +- pio_local.ini_example | 2 +- platformio.ini | 2 +- scripts/build_interface.py | 6 +++--- scripts/update_all.sh | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/dev_release.yml b/.github/workflows/dev_release.yml index 3c3dcf7ea..e68ac55b4 100644 --- a/.github/workflows/dev_release.yml +++ b/.github/workflows/dev_release.yml @@ -47,7 +47,7 @@ jobs: - name: Build webUI run: | - platformio run -e build_webUI + platformio run -e build-webUI - name: Build modbus run: | diff --git a/.github/workflows/stable_release.yml b/.github/workflows/stable_release.yml index 76fb12038..6286e6ea3 100644 --- a/.github/workflows/stable_release.yml +++ b/.github/workflows/stable_release.yml @@ -39,7 +39,7 @@ jobs: - name: Build webUI run: | - platformio run -e build_webUI + platformio run -e build-webUI - name: Build modbus run: | diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index a9da6a564..3fb4ce3fc 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -47,7 +47,7 @@ jobs: - name: Build webUI run: | - platformio run -e build_webUI + platformio run -e build-webUI - name: Build modbus run: | diff --git a/interface/package.json b/interface/package.json index 5fd86c743..ffa98cfbc 100644 --- a/interface/package.json +++ b/interface/package.json @@ -17,7 +17,7 @@ "preview-standalone": "typesafe-i18n --no-watch && vite build && concurrently -c \"auto\" \"pnpm:mock-rest\" \"vite preview\"", "standalone": "concurrently -c \"auto\" \"typesafe-i18n\" \"pnpm:mock-rest\" \"vite dev\"", "typesafe-i18n": "typesafe-i18n --no-watch", - "build_webUI": "typesafe-i18n --no-watch && vite build && node progmem-generator.js", + "build-webUI": "typesafe-i18n --no-watch && vite build && node progmem-generator.js", "format": "prettier -l -w '**/*.{ts,tsx,js,css,json,md}'", "lint": "eslint . --fix", "standalone-devcontainer": "concurrently -c \"auto\" \"typesafe-i18n\" \"pnpm:mock-rest\" \"vite --host\"" diff --git a/pio_local.ini_example b/pio_local.ini_example index 5b976e0f8..29a40d240 100644 --- a/pio_local.ini_example +++ b/pio_local.ini_example @@ -20,7 +20,7 @@ my_build_flags = [platformio] default_envs = s_16M_P ; BBQKees E32V2 -; default_envs = build_webUI ; build the web interface only +; default_envs = build-webUI ; build the web interface only ; default_envs = s3_16M_P ; BBQKees S3 ; default_envs = s_4M ; BBQKees older S32, 4MB no psram ; default_envs = s_16M ; BBQKees newer S32 V2, 16MB no psram diff --git a/platformio.ini b/platformio.ini index c649d5e8d..c94e1383f 100644 --- a/platformio.ini +++ b/platformio.ini @@ -109,7 +109,7 @@ lib_deps = ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 ; builds the web interface only, not the firmware -[env:build_webUI] +[env:build-webUI] platform = native targets = build extra_scripts = pre:scripts/build_interface.py diff --git a/scripts/build_interface.py b/scripts/build_interface.py index 069e8c774..b30eced2c 100755 --- a/scripts/build_interface.py +++ b/scripts/build_interface.py @@ -74,7 +74,7 @@ def buildWeb(): # Run pnpm commands in the interface directory commands = [ f"{pnpm_exe} install", - f"{pnpm_exe} build_webUI" + f"{pnpm_exe} build-webUI" ] for command in commands: @@ -102,7 +102,7 @@ def buildWeb(): return False -def build_webUI(*args, **kwargs): +def build-webUI(*args, **kwargs): success = buildWeb() if not success: print("Web interface build failed!") @@ -114,7 +114,7 @@ def build_webUI(*args, **kwargs): env.AddCustomTarget( name="build", dependencies=None, - actions=[build_webUI], + actions=[build-webUI], title="build web interface", description="installs pnpm packages, updates libraries and builds web UI", always_build=True diff --git a/scripts/update_all.sh b/scripts/update_all.sh index 31992ecd8..283e892c5 100644 --- a/scripts/update_all.sh +++ b/scripts/update_all.sh @@ -20,7 +20,7 @@ pnpm format cd .. cd interface -pnpm build_webUI +pnpm build-webUI cd .. npx cspell "**" From 845c51d5f9f97550a6c3dd068d5ed4e10420aa62 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 19 Apr 2026 21:23:59 +0200 Subject: [PATCH 137/162] rename build_webUI for Python --- scripts/build_interface.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build_interface.py b/scripts/build_interface.py index b30eced2c..0be356f58 100755 --- a/scripts/build_interface.py +++ b/scripts/build_interface.py @@ -102,7 +102,7 @@ def buildWeb(): return False -def build-webUI(*args, **kwargs): +def build_webUI(*args, **kwargs): success = buildWeb() if not success: print("Web interface build failed!") @@ -114,7 +114,7 @@ def build-webUI(*args, **kwargs): env.AddCustomTarget( name="build", dependencies=None, - actions=[build-webUI], + actions=[build_webUI], title="build web interface", description="installs pnpm packages, updates libraries and builds web UI", always_build=True From a07916900537f17ce41f593c41165f047f025d1a Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 20 Apr 2026 13:18:50 +0200 Subject: [PATCH 138/162] backup nvs1 if exist --- src/core/system.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 6478465b2..b29e3f4c1 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1767,7 +1767,7 @@ void System::exportSystemBackup(JsonObject output) { node = nodes.add(); node["type"] = "nvs"; - const char * nvs_part = "nvs"; + const char * nvs_part = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, "nvs1") ? "nvs1" : "nvs"; // nvs1 is on 16MBs nvs_iterator_t it = nullptr; #if ESP_IDF_VERSION_MAJOR < 5 it = nvs_entry_find(nvs_part, "ems-esp", NVS_TYPE_ANY); From 0b5a83f6ae9cab1dca81ea16eed18c096535633b Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 20 Apr 2026 15:37:50 +0200 Subject: [PATCH 139/162] package update (vite fix) --- interface/package.json | 4 +- interface/pnpm-lock.yaml | 202 +++++++++++++++++++-------------------- 2 files changed, 103 insertions(+), 103 deletions(-) diff --git a/interface/package.json b/interface/package.json index ffa98cfbc..ffa17b1e7 100644 --- a/interface/package.json +++ b/interface/package.json @@ -42,7 +42,7 @@ "react-dom": "^19.2.5", "react-icons": "^5.6.0", "react-router": "^7.14.1", - "react-toastify": "^11.0.5", + "react-toastify": "^11.1.0", "typesafe-i18n": "^5.27.1", "typescript": "^6.0.3" }, @@ -63,7 +63,7 @@ "rollup-plugin-visualizer": "^7.0.1", "terser": "^5.46.1", "typescript-eslint": "^8.58.2", - "vite": "^8.0.8", + "vite": "^8.0.9", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index bb807db0f..a4b573585 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: ^7.14.1 version: 7.14.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-toastify: - specifier: ^11.0.5 - version: 11.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^11.1.0 + version: 11.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) typesafe-i18n: specifier: ^5.27.1 version: 5.27.1(typescript@6.0.3) @@ -83,7 +83,7 @@ importers: version: 10.0.1(eslint@10.2.1) '@preact/preset-vite': specifier: ^2.10.5 - version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.3) @@ -113,7 +113,7 @@ importers: version: 3.8.3 rollup-plugin-visualizer: specifier: ^7.0.1 - version: 7.0.1(rolldown@1.0.0-rc.15)(rollup@4.59.0) + version: 7.0.1(rolldown@1.0.0-rc.16)(rollup@4.59.0) terser: specifier: ^5.46.1 version: 5.46.1 @@ -121,14 +121,14 @@ importers: specifier: ^8.58.2 version: 8.58.2(eslint@10.2.1)(typescript@6.0.3) vite: - specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + specifier: ^8.0.9 + version: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 0.6.1(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) packages: @@ -653,8 +653,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.124.0': - resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} + '@oxc-project/types@0.126.0': + resolution: {integrity: sha512-oGfVtjAgwQVVpfBrbtk4e1XDyWHRFta6BS3GWVzrF8xYBT2VGQAk39yJS/wFSMrZqoiCU4oghT3Ch0HaHGIHcQ==} '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} @@ -690,103 +690,103 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' - '@rolldown/binding-android-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} + '@rolldown/binding-android-arm64@1.0.0-rc.16': + resolution: {integrity: sha512-rhY3k7Bsae9qQfOtph2Pm2jZEA+s8Gmjoz4hhmx70K9iMQ/ddeae+xhRQcM5IuVx5ry1+bGfkvMn7D6MJggVSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.16': + resolution: {integrity: sha512-rNz0yK078yrNn3DrdgN+PKiMOW8HfQ92jQiXxwX8yW899ayV00MLVdaCNeVBhG/TbH3ouYVObo8/yrkiectkcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.15': - resolution: {integrity: sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==} + '@rolldown/binding-darwin-x64@1.0.0-rc.16': + resolution: {integrity: sha512-r/OmdR00HmD4i79Z//xO06uEPOq5hRXdhw7nzkxQxwSavs3PSHa1ijntdpOiZ2mzOQ3fVVu8C1M19FoNM+dMUQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': - resolution: {integrity: sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.16': + resolution: {integrity: sha512-KcRE5w8h0OnjUatG8pldyD14/CQ5Phs1oxfR+3pKDjboHRo9+MkqQaiIZlZRpsxC15paeXme/I127tUa9TXJ6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': - resolution: {integrity: sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16': + resolution: {integrity: sha512-bT0guA1bpxEJ/ZhTRniQf7rNF8ybvXOuWbNIeLABaV5NGjx4EtOWBTSRGWFU9ZWVkPOZ+HNFP8RMcBokBiZ0Kg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-+tHktCHWV8BDQSjemUqm/Jl/TPk3QObCTIjmdDy/nlupcujZghmKK2962LYrqFpWu+ai01AN/REOH3NEpqvYQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16': + resolution: {integrity: sha512-3fPzdREH806oRLxpTWW1Gt4tQHs0TitZFOECB2xzCFLPKnSOy90gwA7P29cksYilFO6XVRY1kzga0cL2nRjKPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-EKwI1tSrLs7YVw+JPJT/G2dJQ1jl9qlTTTEG0V2Ok/RdOenRfBw2PQdLPyjhIu58ocdBfP7vIRN/pvMsPxs/AQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-Uknladnb3Sxqu6SEcqBldQyJUpk8NleooZEc0MbRBJ4inEhRYWZX0NJu12vNf2mqAq7gsofAxHrGghiUYjhaLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-FIb8+uG49sZBtLTn+zt1AJ20TqVcqWeSIyoVt0or7uAWesgKaHbiBh6OpA/k9v0LTt+PTrb1Lao133kP4uVxkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.16': + resolution: {integrity: sha512-RuERhF9/EgWxZEXYWCOaViUWHIboceK4/ivdtQ3R0T44NjLkIIlGIAVAuCddFxsZ7vnRHtNQUrt2vR2n2slB2w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.16': + resolution: {integrity: sha512-mXcXnvd9GpazCxeUCCnZ2+YF7nut+ZOEbE4GtaiPtyY6AkhZWbK70y1KK3j+RDhjVq5+U8FySkKRb/+w0EeUwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': - resolution: {integrity: sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==} - engines: {node: '>=14.0.0'} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.16': + resolution: {integrity: sha512-3Q2KQxnC8IJOLqXmUMoYwyIPZU9hzRbnHaoV3Euz+VVnjZKcY8ktnNP8T9R4/GGQtb27C/UYKABxesKWb8lsvQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16': + resolution: {integrity: sha512-tj7XRemQcOcFwv7qhpUxMTBbI5mWMlE4c1Omhg5+h8GuLXzyj8HviYgR+bB2DMDgRqUE+jiDleqSCRjx4aYk/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16': + resolution: {integrity: sha512-PH5DRZT+F4f2PTXRXR8uJxnBq2po/xFtddyabTJVJs/ZYVHqXPEgNIr35IHTEa6bpa0Q8Awg+ymkTaGnKITw4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.15': - resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} + '@rolldown/pluginutils@1.0.0-rc.16': + resolution: {integrity: sha512-45+YtqxLYKDWQouLKCrpIZhke+nXxhsw+qAHVzHDVwttyBlHNBVs2K25rDXrZzhpTp9w1FlAlvweV1H++fdZoA==} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -2804,8 +2804,8 @@ packages: react-dom: optional: true - react-toastify@11.0.5: - resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==} + react-toastify@11.1.0: + resolution: {integrity: sha512-e9h23x3phN0wbFeB6yovmWp7lobzV4CaCH0LO8nVP6H7Y+3GbcLpIzMm9dJhcp1RXbpyfvjgpfXqO80QAmn7sg==} peerDependencies: react: ^18 || ^19 react-dom: ^18 || ^19 @@ -2881,8 +2881,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.15: - resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} + rolldown@1.0.0-rc.16: + resolution: {integrity: sha512-rzi5WqKzEZw3SooTt7cgm4eqIoujPIyGcJNGFL7iPEuajQw7vxMHUkXylu4/vhCkJGXsgRmxqMKXUpT6FEgl0g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3279,8 +3279,8 @@ packages: peerDependencies: vite: '*' - vite@8.0.8: - resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} + vite@8.0.9: + resolution: {integrity: sha512-t7g7GVRpMXjNpa67HaVWI/8BWtdVIQPCL2WoozXXA7LBGEFK4AkkKkHx2hAQf5x1GZSlcmEDPkVLSGahxnEEZw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3900,7 +3900,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.124.0': {} + '@oxc-project/types@0.126.0': {} '@paralleldrive/cuid2@2.3.1': dependencies: @@ -3912,19 +3912,19 @@ snapshots: dependencies: preact: 10.29.1 - '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': + '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) - vite-prerender-plugin: 0.5.13(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite-prerender-plugin: 0.5.13(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -3939,7 +3939,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': + '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3947,60 +3947,60 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.1 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - '@rolldown/binding-android-arm64@1.0.0-rc.15': + '@rolldown/binding-android-arm64@1.0.0-rc.16': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': + '@rolldown/binding-darwin-arm64@1.0.0-rc.16': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.15': + '@rolldown/binding-darwin-x64@1.0.0-rc.16': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': + '@rolldown/binding-freebsd-x64@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.16': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.16': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.16': dependencies: '@emnapi/core': 1.9.2 '@emnapi/runtime': 1.9.2 '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16': optional: true - '@rolldown/pluginutils@1.0.0-rc.15': {} + '@rolldown/pluginutils@1.0.0-rc.16': {} '@rollup/pluginutils@4.2.1': dependencies: @@ -6008,7 +6008,7 @@ snapshots: optionalDependencies: react-dom: 19.2.5(react@19.2.5) - react-toastify@11.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-toastify@11.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: clsx: 2.1.1 react: 19.2.5 @@ -6090,35 +6090,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.15: + rolldown@1.0.0-rc.16: dependencies: - '@oxc-project/types': 0.124.0 - '@rolldown/pluginutils': 1.0.0-rc.15 + '@oxc-project/types': 0.126.0 + '@rolldown/pluginutils': 1.0.0-rc.16 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-x64': 1.0.0-rc.15 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.15 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.15 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.15 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.15 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.15 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.15 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.15 + '@rolldown/binding-android-arm64': 1.0.0-rc.16 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.16 + '@rolldown/binding-darwin-x64': 1.0.0-rc.16 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.16 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.16 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.16 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.16 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.16 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.16 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.16 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.16 - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.59.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.16)(rollup@4.59.0): dependencies: open: 11.0.0 picomatch: 4.0.4 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: - rolldown: 1.0.0-rc.15 + rolldown: 1.0.0-rc.16 rollup: 4.59.0 rollup@4.59.0: @@ -6477,7 +6477,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-plugin-imagemin@0.6.1(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6502,11 +6502,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-prerender-plugin@0.5.13(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6514,24 +6514,24 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) - vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@6.0.3) - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - typescript - vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1): + vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.10 - rolldown: 1.0.0-rc.15 + rolldown: 1.0.0-rc.16 tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.6.0 From e705a5629f5c6b3eb0ac20ef53c5d0f749362304 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 21 Apr 2026 18:58:13 +0200 Subject: [PATCH 140/162] fetch length of holiday to 18 --- src/devices/thermostat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index e27b08e5c..977f041bc 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -202,7 +202,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i if (model == EMSdevice::EMS_DEVICE_FLAG_RC100) { register_telegram_type(0x43F, "CRHolidays", true, MAKE_PF_CB(process_RC300Holiday), 6); } else { - register_telegram_type(0x269, "RC300Holiday", true, MAKE_PF_CB(process_RC300Holiday), 6); + register_telegram_type(0x269, "RC300Holiday", true, MAKE_PF_CB(process_RC300Holiday), 18); } register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent), 1); register_telegram_type(0xBF, "ErrorMessage", false, MAKE_PF_CB(process_ErrorMessageBF)); From 06ff21938561c7b89d21a9ddc857bf3b7b9841fd Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 21 Apr 2026 18:58:42 +0200 Subject: [PATCH 141/162] version check order --- src/web/WebStatusService.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index aa66292b1..d97c4d4e8 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -296,10 +296,6 @@ uint8_t WebStatusService::upgradeImportantMessages(std::string & version) { version::EMSESP_Version current_version(current_version_s); // get current version - if (latest_version > current_version && current_version.minor() < latest_version.minor()) { - return 0; // if it's just a minor version upgrade return 0 - } - if ((current_version.major() <= 3 && current_version.minor() <= 8) && (latest_version.major() == 3 && latest_version.minor() == 9)) { return 1; // if moving from below 3.8.x to 3.9.x return 1 } @@ -308,6 +304,10 @@ uint8_t WebStatusService::upgradeImportantMessages(std::string & version) { return 2; // if it's a major version upgrade return 2 } + if (latest_version > current_version && current_version.minor() < latest_version.minor()) { + return 0; // if it's just a minor version upgrade return 0 + } + return 0; // if it's not a valid version upgrade return 0 } From 35550553bea4bb4c09215447e84dc5363dca1ef2 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 21 Apr 2026 19:51:48 +0200 Subject: [PATCH 142/162] check fetch length for custom entities, dev17 --- CHANGELOG_LATEST.md | 1 + interface/package.json | 8 +- interface/pnpm-lock.yaml | 356 ++++++++++++++--------------- src/core/emsdevice.cpp | 4 +- src/core/emsdevice.h | 2 +- src/emsesp_version.h | 2 +- src/web/WebCustomEntityService.cpp | 2 +- 7 files changed, 188 insertions(+), 187 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 2c15ada09..e0405527a 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -19,6 +19,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - SRC climate creation [#2936](https://github.com/emsesp/EMS-ESP32/issues/2936) and [#2960](https://github.com/emsesp/EMS-ESP32/issues/2960) - missing translations [#3015](https://github.com/emsesp/EMS-ESP32/issues/3015) +- custom entities check fetch length ## Changed diff --git a/interface/package.json b/interface/package.json index 5fd86c743..70bea52c5 100644 --- a/interface/package.json +++ b/interface/package.json @@ -41,8 +41,8 @@ "react": "^19.2.5", "react-dom": "^19.2.5", "react-icons": "^5.6.0", - "react-router": "^7.14.1", - "react-toastify": "^11.0.5", + "react-router": "^7.14.2", + "react-toastify": "^11.1.0", "typesafe-i18n": "^5.27.1", "typescript": "^6.0.3" }, @@ -62,8 +62,8 @@ "prettier": "^3.8.3", "rollup-plugin-visualizer": "^7.0.1", "terser": "^5.46.1", - "typescript-eslint": "^8.58.2", - "vite": "^8.0.8", + "typescript-eslint": "^8.59.0", + "vite": "^8.0.9", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index bb807db0f..ce34a3c30 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -63,11 +63,11 @@ importers: specifier: ^5.6.0 version: 5.6.0(react@19.2.5) react-router: - specifier: ^7.14.1 - version: 7.14.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^7.14.2 + version: 7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-toastify: - specifier: ^11.0.5 - version: 11.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^11.1.0 + version: 11.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) typesafe-i18n: specifier: ^5.27.1 version: 5.27.1(typescript@6.0.3) @@ -83,7 +83,7 @@ importers: version: 10.0.1(eslint@10.2.1) '@preact/preset-vite': specifier: ^2.10.5 - version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.3) @@ -113,22 +113,22 @@ importers: version: 3.8.3 rollup-plugin-visualizer: specifier: ^7.0.1 - version: 7.0.1(rolldown@1.0.0-rc.15)(rollup@4.59.0) + version: 7.0.1(rolldown@1.0.0-rc.16)(rollup@4.59.0) terser: specifier: ^5.46.1 version: 5.46.1 typescript-eslint: - specifier: ^8.58.2 - version: 8.58.2(eslint@10.2.1)(typescript@6.0.3) + specifier: ^8.59.0 + version: 8.59.0(eslint@10.2.1)(typescript@6.0.3) vite: - specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + specifier: ^8.0.9 + version: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 0.6.1(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) packages: @@ -653,8 +653,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.124.0': - resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} + '@oxc-project/types@0.126.0': + resolution: {integrity: sha512-oGfVtjAgwQVVpfBrbtk4e1XDyWHRFta6BS3GWVzrF8xYBT2VGQAk39yJS/wFSMrZqoiCU4oghT3Ch0HaHGIHcQ==} '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} @@ -690,103 +690,103 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' - '@rolldown/binding-android-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} + '@rolldown/binding-android-arm64@1.0.0-rc.16': + resolution: {integrity: sha512-rhY3k7Bsae9qQfOtph2Pm2jZEA+s8Gmjoz4hhmx70K9iMQ/ddeae+xhRQcM5IuVx5ry1+bGfkvMn7D6MJggVSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.16': + resolution: {integrity: sha512-rNz0yK078yrNn3DrdgN+PKiMOW8HfQ92jQiXxwX8yW899ayV00MLVdaCNeVBhG/TbH3ouYVObo8/yrkiectkcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.15': - resolution: {integrity: sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==} + '@rolldown/binding-darwin-x64@1.0.0-rc.16': + resolution: {integrity: sha512-r/OmdR00HmD4i79Z//xO06uEPOq5hRXdhw7nzkxQxwSavs3PSHa1ijntdpOiZ2mzOQ3fVVu8C1M19FoNM+dMUQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': - resolution: {integrity: sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.16': + resolution: {integrity: sha512-KcRE5w8h0OnjUatG8pldyD14/CQ5Phs1oxfR+3pKDjboHRo9+MkqQaiIZlZRpsxC15paeXme/I127tUa9TXJ6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': - resolution: {integrity: sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16': + resolution: {integrity: sha512-bT0guA1bpxEJ/ZhTRniQf7rNF8ybvXOuWbNIeLABaV5NGjx4EtOWBTSRGWFU9ZWVkPOZ+HNFP8RMcBokBiZ0Kg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-+tHktCHWV8BDQSjemUqm/Jl/TPk3QObCTIjmdDy/nlupcujZghmKK2962LYrqFpWu+ai01AN/REOH3NEpqvYQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16': + resolution: {integrity: sha512-3fPzdREH806oRLxpTWW1Gt4tQHs0TitZFOECB2xzCFLPKnSOy90gwA7P29cksYilFO6XVRY1kzga0cL2nRjKPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-EKwI1tSrLs7YVw+JPJT/G2dJQ1jl9qlTTTEG0V2Ok/RdOenRfBw2PQdLPyjhIu58ocdBfP7vIRN/pvMsPxs/AQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-Uknladnb3Sxqu6SEcqBldQyJUpk8NleooZEc0MbRBJ4inEhRYWZX0NJu12vNf2mqAq7gsofAxHrGghiUYjhaLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16': + resolution: {integrity: sha512-FIb8+uG49sZBtLTn+zt1AJ20TqVcqWeSIyoVt0or7uAWesgKaHbiBh6OpA/k9v0LTt+PTrb1Lao133kP4uVxkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.16': + resolution: {integrity: sha512-RuERhF9/EgWxZEXYWCOaViUWHIboceK4/ivdtQ3R0T44NjLkIIlGIAVAuCddFxsZ7vnRHtNQUrt2vR2n2slB2w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.16': + resolution: {integrity: sha512-mXcXnvd9GpazCxeUCCnZ2+YF7nut+ZOEbE4GtaiPtyY6AkhZWbK70y1KK3j+RDhjVq5+U8FySkKRb/+w0EeUwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': - resolution: {integrity: sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==} - engines: {node: '>=14.0.0'} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.16': + resolution: {integrity: sha512-3Q2KQxnC8IJOLqXmUMoYwyIPZU9hzRbnHaoV3Euz+VVnjZKcY8ktnNP8T9R4/GGQtb27C/UYKABxesKWb8lsvQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16': + resolution: {integrity: sha512-tj7XRemQcOcFwv7qhpUxMTBbI5mWMlE4c1Omhg5+h8GuLXzyj8HviYgR+bB2DMDgRqUE+jiDleqSCRjx4aYk/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16': + resolution: {integrity: sha512-PH5DRZT+F4f2PTXRXR8uJxnBq2po/xFtddyabTJVJs/ZYVHqXPEgNIr35IHTEa6bpa0Q8Awg+ymkTaGnKITw4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.15': - resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} + '@rolldown/pluginutils@1.0.0-rc.16': + resolution: {integrity: sha512-45+YtqxLYKDWQouLKCrpIZhke+nXxhsw+qAHVzHDVwttyBlHNBVs2K25rDXrZzhpTp9w1FlAlvweV1H++fdZoA==} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -1040,63 +1040,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.58.2': - resolution: {integrity: sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==} + '@typescript-eslint/eslint-plugin@8.59.0': + resolution: {integrity: sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.58.2 + '@typescript-eslint/parser': ^8.59.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.58.2': - resolution: {integrity: sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==} + '@typescript-eslint/parser@8.59.0': + resolution: {integrity: sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.58.2': - resolution: {integrity: sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==} + '@typescript-eslint/project-service@8.59.0': + resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.58.2': - resolution: {integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==} + '@typescript-eslint/scope-manager@8.59.0': + resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.58.2': - resolution: {integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==} + '@typescript-eslint/tsconfig-utils@8.59.0': + resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.58.2': - resolution: {integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==} + '@typescript-eslint/type-utils@8.59.0': + resolution: {integrity: sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.58.2': - resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==} + '@typescript-eslint/types@8.59.0': + resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.58.2': - resolution: {integrity: sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==} + '@typescript-eslint/typescript-estree@8.59.0': + resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.58.2': - resolution: {integrity: sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==} + '@typescript-eslint/utils@8.59.0': + resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.58.2': - resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} + '@typescript-eslint/visitor-keys@8.59.0': + resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1523,8 +1523,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.340: - resolution: {integrity: sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==} + electron-to-chromium@1.5.341: + resolution: {integrity: sha512-1sZTssferjgDgaqRTc0ieP+ozzpOy7LQTPTtEW3yQFn4+ORdIAZWV5BthXPyHF7YqLvFJCUPhNhdAJQYlYUgiw==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2278,8 +2278,8 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} junk@3.1.0: resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} @@ -2794,8 +2794,8 @@ packages: react-is@19.2.5: resolution: {integrity: sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ==} - react-router@7.14.1: - resolution: {integrity: sha512-5BCvFskyAAVumqhEKh/iPhLOIkfxcEUz8WqFIARCkMg8hZZzDYX9CtwxXA0e+qT8zAxmMC0x3Ckb9iMONwc5jg==} + react-router@7.14.2: + resolution: {integrity: sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -2804,8 +2804,8 @@ packages: react-dom: optional: true - react-toastify@11.0.5: - resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==} + react-toastify@11.1.0: + resolution: {integrity: sha512-e9h23x3phN0wbFeB6yovmWp7lobzV4CaCH0LO8nVP6H7Y+3GbcLpIzMm9dJhcp1RXbpyfvjgpfXqO80QAmn7sg==} peerDependencies: react: ^18 || ^19 react-dom: ^18 || ^19 @@ -2881,8 +2881,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.15: - resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} + rolldown@1.0.0-rc.16: + resolution: {integrity: sha512-rzi5WqKzEZw3SooTt7cgm4eqIoujPIyGcJNGFL7iPEuajQw7vxMHUkXylu4/vhCkJGXsgRmxqMKXUpT6FEgl0g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3210,8 +3210,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.58.2: - resolution: {integrity: sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ==} + typescript-eslint@8.59.0: + resolution: {integrity: sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3279,8 +3279,8 @@ packages: peerDependencies: vite: '*' - vite@8.0.8: - resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} + vite@8.0.9: + resolution: {integrity: sha512-t7g7GVRpMXjNpa67HaVWI/8BWtdVIQPCL2WoozXXA7LBGEFK4AkkKkHx2hAQf5x1GZSlcmEDPkVLSGahxnEEZw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3900,7 +3900,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.124.0': {} + '@oxc-project/types@0.126.0': {} '@paralleldrive/cuid2@2.3.1': dependencies: @@ -3912,19 +3912,19 @@ snapshots: dependencies: preact: 10.29.1 - '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': + '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) - vite-prerender-plugin: 0.5.13(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite-prerender-plugin: 0.5.13(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -3939,7 +3939,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': + '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3947,60 +3947,60 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.1 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - '@rolldown/binding-android-arm64@1.0.0-rc.15': + '@rolldown/binding-android-arm64@1.0.0-rc.16': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': + '@rolldown/binding-darwin-arm64@1.0.0-rc.16': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.15': + '@rolldown/binding-darwin-x64@1.0.0-rc.16': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': + '@rolldown/binding-freebsd-x64@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.16': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.16': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.16': dependencies: '@emnapi/core': 1.9.2 '@emnapi/runtime': 1.9.2 '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16': optional: true - '@rolldown/pluginutils@1.0.0-rc.15': {} + '@rolldown/pluginutils@1.0.0-rc.16': {} '@rollup/pluginutils@4.2.1': dependencies: @@ -4196,14 +4196,14 @@ snapshots: dependencies: '@types/node': 25.6.0 - '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.2(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/type-utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.58.2 + '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/type-utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.0 eslint: 10.2.1 ignore: 7.0.5 natural-compare: 1.4.0 @@ -4212,41 +4212,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.2(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.58.2 + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.0 debug: 4.4.3 eslint: 10.2.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.58.2(typescript@6.0.3)': + '@typescript-eslint/project-service@8.59.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) - '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) + '@typescript-eslint/types': 8.59.0 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.58.2': + '@typescript-eslint/scope-manager@8.59.0': dependencies: - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/visitor-keys': 8.58.2 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 - '@typescript-eslint/tsconfig-utils@8.58.2(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.59.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.58.2(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.59.0(eslint@10.2.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) debug: 4.4.3 eslint: 10.2.1 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -4254,14 +4254,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.58.2': {} + '@typescript-eslint/types@8.59.0': {} - '@typescript-eslint/typescript-estree@8.58.2(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.59.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.58.2(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/visitor-keys': 8.58.2 + '@typescript-eslint/project-service': 8.59.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 @@ -4271,20 +4271,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.2(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/utils@8.59.0(eslint@10.2.1)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) - '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) eslint: 10.2.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.58.2': + '@typescript-eslint/visitor-keys@8.59.0': dependencies: - '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/types': 8.59.0 eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.16.0): @@ -4418,7 +4418,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.10.20 caniuse-lite: 1.0.30001788 - electron-to-chromium: 1.5.340 + electron-to-chromium: 1.5.341 node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4782,7 +4782,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.340: {} + electron-to-chromium@1.5.341: {} emoji-regex@10.6.0: {} @@ -5173,7 +5173,7 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.2.1 universalify: 2.0.1 fs.realpath@1.0.0: {} @@ -5544,7 +5544,7 @@ snapshots: json5@2.2.3: {} - jsonfile@6.2.0: + jsonfile@6.2.1: dependencies: universalify: 2.0.1 optionalDependencies: @@ -6000,7 +6000,7 @@ snapshots: react-is@19.2.5: {} - react-router@7.14.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-router@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: cookie: 1.1.1 react: 19.2.5 @@ -6008,7 +6008,7 @@ snapshots: optionalDependencies: react-dom: 19.2.5(react@19.2.5) - react-toastify@11.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-toastify@11.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: clsx: 2.1.1 react: 19.2.5 @@ -6090,35 +6090,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.15: + rolldown@1.0.0-rc.16: dependencies: - '@oxc-project/types': 0.124.0 - '@rolldown/pluginutils': 1.0.0-rc.15 + '@oxc-project/types': 0.126.0 + '@rolldown/pluginutils': 1.0.0-rc.16 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-x64': 1.0.0-rc.15 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.15 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.15 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.15 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.15 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.15 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.15 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.15 + '@rolldown/binding-android-arm64': 1.0.0-rc.16 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.16 + '@rolldown/binding-darwin-x64': 1.0.0-rc.16 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.16 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.16 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.16 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.16 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.16 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.16 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.16 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.16 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.16 - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.59.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.16)(rollup@4.59.0): dependencies: open: 11.0.0 picomatch: 4.0.4 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: - rolldown: 1.0.0-rc.15 + rolldown: 1.0.0-rc.16 rollup: 4.59.0 rollup@4.59.0: @@ -6426,12 +6426,12 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.58.2(eslint@10.2.1)(typescript@6.0.3): + typescript-eslint@8.59.0(eslint@10.2.1)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/parser': 8.58.2(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) eslint: 10.2.1 typescript: 6.0.3 transitivePeerDependencies: @@ -6477,7 +6477,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-plugin-imagemin@0.6.1(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6502,11 +6502,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-prerender-plugin@0.5.13(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6514,24 +6514,24 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) - vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@6.0.3) - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - typescript - vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1): + vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.10 - rolldown: 1.0.0-rc.15 + rolldown: 1.0.0-rc.16 tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.6.0 diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index d5c18839d..570cb4470 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -387,10 +387,10 @@ void EMSdevice::toggle_fetch(uint16_t telegram_id, bool toggle) { } // get status of automatic fetch for a telegramID -bool EMSdevice::is_fetch(uint16_t telegram_id) const { +bool EMSdevice::is_fetch(uint16_t telegram_id, uint8_t len) const { for (const auto & tf : telegram_functions_) { if (tf.telegram_type_id_ == telegram_id) { - return tf.fetch_; + return tf.fetch_ && tf.length_ >= len; } } return false; diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index 366f76a2e..01c870a1d 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -362,7 +362,7 @@ class EMSdevice { const char * telegram_type_name(std::shared_ptr telegram); void fetch_values(); void toggle_fetch(uint16_t telegram_id, bool toggle); - bool is_fetch(uint16_t telegram_id) const; + bool is_fetch(uint16_t telegram_id, uint8_t len = 0) const; bool is_received(uint16_t telegram_id) const; bool has_telegram_id(uint16_t id) const; void ha_config_clear(); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index ea3298f88..98327e7c2 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.16" +#define EMSESP_APP_VERSION "3.8.2-dev.17" diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index 9de8f3da8..faf9f54eb 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -686,7 +686,7 @@ void WebCustomEntityService::fetch() { uint8_t stop = (entity.offset + len[entity.value_type]) % fetchblock; bool is_fetched = start < fetchblock && stop < fetchblock; // make sure the complete value is a a fetched block for (const auto & emsdevice : EMSESP::emsdevices) { - if (emsdevice->is_device_id(entity.device_id) && emsdevice->is_fetch(entity.type_id) + if (emsdevice->is_device_id(entity.device_id) && emsdevice->is_fetch(entity.type_id, entity.offset + len[entity.value_type]) && (is_fetched || entity.value_type == DeviceValueType::STRING)) { needFetch = false; break; From c9fd076394f803cb9d32ed12de4fe640b98c3a95 Mon Sep 17 00:00:00 2001 From: mattreim <80219712+mattreim@users.noreply.github.com> Date: Wed, 22 Apr 2026 01:05:05 +0200 Subject: [PATCH 143/162] Update German translation --- interface/src/i18n/de/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 4a9710e1d..3a766efb4 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -187,7 +187,7 @@ const de: Translation = { COMPACT: 'Kompakte Darstellung', DOWNLOAD_SETTINGS_TEXT: 'Erstellen Sie eine Sicherung Ihrer Konfigurationen und Einstellungen', DOWNLOAD_SETTINGS_TEXT2: 'Exportiere alle Werte', - DOWNLOAD_SYSTEM_BACKUP: 'System Sicherung', + DOWNLOAD_SYSTEM_BACKUP: 'Systemsicherung', UPLOAD_TEXT: 'Laden Sie eine neue Firmware-Datei (.bin) oder eine Sicherungsdatei (.json) hoch', UPLOAD_DROP_TEXT: 'Legen Sie eine Firmware-Datei (.bin) ab oder klicken Sie hier', ERROR: 'Unerwarteter Fehler, bitte versuchen Sie es erneut.', @@ -362,9 +362,9 @@ const de: Translation = { STORED_VERSIONS: 'Gespeicherte Versionen', ONLINE_HELP: 'Online-Hilfe', UPGRADE_IMPORTANT_MESSAGES: 'Wichtige Nachrichten aktualisieren', - UPGRADE_IMPORTANT_MESSAGES_1: 'Diese Aktualisierung erfordert eine Werkseinstellung. Stellen Sie sicher, dass Sie zuerst eine Systemsicherung herunterladen, bevor Sie fortfahren, und laden Sie diese Datei dann nach der Installation der neuen Version hoch.', + UPGRADE_IMPORTANT_MESSAGES_1: 'Für diese Aktualisierung ist ein Werksreset erforderlich. Stellen Sie sicher, dass Sie zuerst eine Systemsicherung herunterladen, bevor Sie fortfahren, und laden Sie diese Datei dann nach der Installation der neuen Version hoch.', UPGRADE_IMPORTANT_MESSAGES_2: 'Sie aktualisieren auf eine neue Hauptversion. Stellen Sie sicher, dass Sie den ChangeLog für alle wichtigen Änderungen gelesen haben.', - WARNING_SYSTEM_BACKUP: 'Dies wird eine Sicherung Ihrer vollständigen Systemkonfiguration und -einstellungen erstellen. Alle Passwörter werden im Sicherungsdatei lesbar sein. Seien Sie vorsichtig beim Teilen! Möchten Sie fortfahren?' + WARNING_SYSTEM_BACKUP: 'Dies wird eine Sicherung Ihrer vollständigen Systemkonfiguration und Einstellungen erstellen. Alle Passwörter werden in dieser Sicherungsdatei lesbar sein. Seien Sie vorsichtig beim Teilen! Möchten Sie fortfahren?' }; From 29380f030361b4d69abd8a9c5832adc9904152d0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 22 Apr 2026 14:59:46 +0200 Subject: [PATCH 144/162] version checks prelease --- src/core/EMSESP_Version.h | 6 ++++-- src/emsesp_version.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/EMSESP_Version.h b/src/core/EMSESP_Version.h index c9be68f61..0803be2b5 100644 --- a/src/core/EMSESP_Version.h +++ b/src/core/EMSESP_Version.h @@ -69,7 +69,9 @@ class EMSESP_Version { return a.major_ < b.major_; if (a.minor_ != b.minor_) return a.minor_ < b.minor_; - return a.patch_ < b.patch_; + if (a.patch_ != b.patch_) + return a.patch_ < b.patch_; + return a.prerelease_ < b.prerelease_; } friend bool operator>(const EMSESP_Version & a, const EMSESP_Version & b) { @@ -77,7 +79,7 @@ class EMSESP_Version { } friend bool operator==(const EMSESP_Version & a, const EMSESP_Version & b) { - return a.major_ == b.major_ && a.minor_ == b.minor_ && a.patch_ == b.patch_; + return a.major_ == b.major_ && a.minor_ == b.minor_ && a.patch_ == b.patch_ && a.prerelease_ == b.prerelease_; } friend bool operator!=(const EMSESP_Version & a, const EMSESP_Version & b) { diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 98327e7c2..4909b018f 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.17" +#define EMSESP_APP_VERSION "3.8.2-dev.18" From daffdcf58e358606cce36da61cd642ff401271ee Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 22 Apr 2026 15:43:20 +0200 Subject: [PATCH 145/162] https://github.com/emsesp/EMS-ESP32/issues/2686 --- src/devices/thermostat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 977f041bc..aa909b515 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -166,7 +166,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set2_typeids = {0x0421, 0x0422, 0x0423, 0x0424}; summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6}; curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x02A0, 0x02A1, 0x02A2}; - summer2_typeids = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; + summer2_typeids = {0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; hp_typeids = {0x0467, 0x0468, 0x0469, 0x046A}; hpmode_typeids = {0x0291, 0x0292, 0x0293, 0x0294}; const size_t monitor_size = monitor_typeids.size(); From 74c76eb90b2e52a21a6583e2412080e02092a12d Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 22 Apr 2026 15:43:29 +0200 Subject: [PATCH 146/162] remove YIELD --- src/core/temperaturesensor.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/core/temperaturesensor.cpp b/src/core/temperaturesensor.cpp index afcfb4673..086582292 100644 --- a/src/core/temperaturesensor.cpp +++ b/src/core/temperaturesensor.cpp @@ -21,12 +21,6 @@ #include "temperaturesensor.h" #include "emsesp.h" -#ifdef ESP32 -#define YIELD -#else -#define YIELD yield() -#endif - namespace emsesp { uuid::log::Logger TemperatureSensor::logger_{F_(temperaturesensor), uuid::log::Facility::DAEMON}; @@ -81,7 +75,6 @@ void TemperatureSensor::loop() { LOG_DEBUG("Read sensor temperature"); #endif if (bus_.reset() || parasite_) { - YIELD; bus_.skip(); bus_.write(CMD_CONVERT_TEMP, parasite_ ? 1 : 0); state_ = State::READING; @@ -260,19 +253,16 @@ int16_t TemperatureSensor::get_temperature_c(const uint8_t addr[]) { LOG_ERROR("Bus reset failed before reading scratchpad from %s", Sensor(addr).id()); return EMS_VALUE_INT16_NOTSET; } - YIELD; uint8_t scratchpad[SCRATCHPAD_LEN] = {0}; bus_.select(addr); bus_.write(CMD_READ_SCRATCHPAD); bus_.read_bytes(scratchpad, SCRATCHPAD_LEN); - YIELD; if (!bus_.reset()) { LOG_ERROR("Bus reset failed after reading scratchpad from %s", Sensor(addr).id()); return EMS_VALUE_INT16_NOTSET; } - YIELD; if (bus_.crc8(scratchpad, SCRATCHPAD_LEN - 1) != scratchpad[SCRATCHPAD_LEN - 1]) { LOG_WARNING("Invalid scratchpad CRC: %02X%02X%02X%02X%02X%02X%02X%02X%02X from sensor %s", From 8e64c6303ec1ab4c42ca67902f74a251b4f504a3 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 22 Apr 2026 15:43:58 +0200 Subject: [PATCH 147/162] package update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 8 ++++---- mock-api/package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/package.json b/interface/package.json index 80ce3ced3..d2d955b19 100644 --- a/interface/package.json +++ b/interface/package.json @@ -67,5 +67,5 @@ "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, - "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" + "packageManager": "pnpm@10.33.1+sha512.05ba3c1d5d1c18f68df06470d74055e62d41fc110a0c660db1b2dfb2785327f04cf0f68345d4609bc52089e7fa0343c31593b2f9594e2c5d5da426230acc9820" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 8b4040ec6..735cfd2c5 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -1287,8 +1287,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001788: - resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} + caniuse-lite@1.0.30001790: + resolution: {integrity: sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -4417,7 +4417,7 @@ snapshots: browserslist@4.28.2: dependencies: baseline-browser-mapping: 2.10.20 - caniuse-lite: 1.0.30001788 + caniuse-lite: 1.0.30001790 electron-to-chromium: 1.5.343 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4480,7 +4480,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001788: {} + caniuse-lite@1.0.30001790: {} caw@2.0.1: dependencies: diff --git a/mock-api/package.json b/mock-api/package.json index c90493509..dea8d1846 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -15,5 +15,5 @@ "itty-router": "^5.0.23", "prettier": "^3.8.3" }, - "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" + "packageManager": "pnpm@10.33.1+sha512.05ba3c1d5d1c18f68df06470d74055e62d41fc110a0c660db1b2dfb2785327f04cf0f68345d4609bc52089e7fa0343c31593b2f9594e2c5d5da426230acc9820" } From 26102121e1996b70e66f19c8d2543f51e1bac6a0 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 22 Apr 2026 16:07:56 +0200 Subject: [PATCH 148/162] async-validator fixes --- interface/src/SignIn.tsx | 4 ++-- .../src/app/main/CustomEntitiesDialog.tsx | 12 ++++++------ interface/src/app/main/DevicesDialog.tsx | 4 ++-- interface/src/app/main/SchedulerDialog.tsx | 4 ++-- interface/src/app/main/SensorsAnalogDialog.tsx | 4 ++-- .../src/app/main/SensorsTemperatureDialog.tsx | 4 ++-- interface/src/app/settings/APSettings.tsx | 4 ++-- .../src/app/settings/ApplicationSettings.tsx | 4 ++-- interface/src/app/settings/MqttSettings.tsx | 4 ++-- interface/src/app/settings/NTPSettings.tsx | 4 ++-- .../app/settings/network/NetworkSettings.tsx | 4 ++-- .../app/settings/security/SecuritySettings.tsx | 4 ++-- interface/src/app/settings/security/User.tsx | 4 ++-- interface/src/validators/shared.ts | 18 ++++++++++++++++-- 14 files changed, 46 insertions(+), 32 deletions(-) diff --git a/interface/src/SignIn.tsx b/interface/src/SignIn.tsx index 7b26d94dc..c3955d286 100644 --- a/interface/src/SignIn.tsx +++ b/interface/src/SignIn.tsx @@ -18,7 +18,7 @@ import { PROJECT_NAME } from 'env'; import { useI18nContext } from 'i18n/i18n-react'; import type { SignInRequest } from 'types'; import { onEnterCallback, updateValue } from 'utils'; -import { SIGN_IN_REQUEST_VALIDATOR, validate } from 'validators'; +import { SIGN_IN_REQUEST_VALIDATOR, ValidationError, validate } from 'validators'; const SignIn = memo(() => { const authenticationContext = useContext(AuthenticationContext); @@ -74,7 +74,7 @@ const SignIn = memo(() => { await validate(SIGN_IN_REQUEST_VALIDATOR, signInRequest); await signIn(); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); setProcessing(false); } }, [signInRequest, signIn, LL]); diff --git a/interface/src/app/main/CustomEntitiesDialog.tsx b/interface/src/app/main/CustomEntitiesDialog.tsx index 170c5e888..b40e4aa25 100644 --- a/interface/src/app/main/CustomEntitiesDialog.tsx +++ b/interface/src/app/main/CustomEntitiesDialog.tsx @@ -28,7 +28,7 @@ import type { ValidateFieldsError } from 'async-validator'; import { BlockFormControlLabel, ValidatedTextField } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { numberValue, updateValue } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import { DeviceValueType, DeviceValueTypeNames, DeviceValueUOM_s } from './types'; import type { EntityItem } from './types'; @@ -136,7 +136,7 @@ const CustomEntitiesDialog = ({ } onSave(processedItem); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [validator, editItem, onSave]); @@ -215,7 +215,7 @@ const CustomEntitiesDialog = ({ name="value" label={LL.DEFAULT(0) + ' ' + LL.VALUE(0)} type="string" - value={editItem.value as string} + value={editItem.value} variant="outlined" onChange={updateFormValue} fullWidth @@ -260,7 +260,7 @@ const CustomEntitiesDialog = ({ margin="normal" sx={{ width: '11ch' }} type="string" - value={editItem.device_id as string} + value={editItem.device_id} onChange={updateFormValue} slotProps={{ input: { @@ -280,7 +280,7 @@ const CustomEntitiesDialog = ({ margin="normal" sx={{ width: '11ch' }} type="string" - value={editItem.type_id as string} + value={editItem.type_id} onChange={updateFormValue} slotProps={{ input: { @@ -381,7 +381,7 @@ const CustomEntitiesDialog = ({ fieldErrors={fieldErrors || {}} name="factor" label={LL.BITMASK()} - value={editItem.factor as string} + value={editItem.factor} sx={{ width: '11ch' }} variant="outlined" onChange={updateFormValue} diff --git a/interface/src/app/main/DevicesDialog.tsx b/interface/src/app/main/DevicesDialog.tsx index 5afa96666..fd2770e7d 100644 --- a/interface/src/app/main/DevicesDialog.tsx +++ b/interface/src/app/main/DevicesDialog.tsx @@ -24,7 +24,7 @@ import type { ValidateFieldsError } from 'async-validator'; import { ValidatedTextField } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { numberValue, updateValue } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import { DeviceValueUOM, DeviceValueUOM_s } from './types'; import type { DeviceValue } from './types'; @@ -67,7 +67,7 @@ const DevicesDialog = ({ await validate(validator, editItem); onSave(editItem); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [validator, editItem, onSave]); diff --git a/interface/src/app/main/SchedulerDialog.tsx b/interface/src/app/main/SchedulerDialog.tsx index 8277da6e3..27713de86 100644 --- a/interface/src/app/main/SchedulerDialog.tsx +++ b/interface/src/app/main/SchedulerDialog.tsx @@ -26,7 +26,7 @@ import type { ValidateFieldsError } from 'async-validator'; import { BlockFormControlLabel, ValidatedTextField } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { updateValue } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import { ScheduleFlag } from './types'; import type { ScheduleItem } from './types'; @@ -120,7 +120,7 @@ const SchedulerDialog = ({ await validate(validator, itemToSave); onSave(itemToSave); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [validator, onSave] diff --git a/interface/src/app/main/SensorsAnalogDialog.tsx b/interface/src/app/main/SensorsAnalogDialog.tsx index 10b49fbf8..ffc5a4485 100644 --- a/interface/src/app/main/SensorsAnalogDialog.tsx +++ b/interface/src/app/main/SensorsAnalogDialog.tsx @@ -23,7 +23,7 @@ import type { ValidateFieldsError } from 'async-validator'; import { ValidatedTextField } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { numberValue, updateValue } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import { AnalogType, AnalogTypeNames, DeviceValueUOM_s } from './types'; import type { AnalogSensor } from './types'; @@ -172,7 +172,7 @@ const SensorsAnalogDialog = ({ await validate(validator, editItem); onSave(editItem); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [validator, editItem, onSave]); diff --git a/interface/src/app/main/SensorsTemperatureDialog.tsx b/interface/src/app/main/SensorsTemperatureDialog.tsx index 31cdad43b..670b34244 100644 --- a/interface/src/app/main/SensorsTemperatureDialog.tsx +++ b/interface/src/app/main/SensorsTemperatureDialog.tsx @@ -21,7 +21,7 @@ import type { ValidateFieldsError } from 'async-validator'; import { ValidatedTextField } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { numberValue, updateValue } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import type { TemperatureSensor } from './types'; @@ -84,7 +84,7 @@ const SensorsTemperatureDialog = ({ await validate(validator, editItem); onSave(editItem); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [validator, editItem, onSave]); diff --git a/interface/src/app/settings/APSettings.tsx b/interface/src/app/settings/APSettings.tsx index 593d0e45d..7d8c8875c 100644 --- a/interface/src/app/settings/APSettings.tsx +++ b/interface/src/app/settings/APSettings.tsx @@ -21,7 +21,7 @@ import { useI18nContext } from 'i18n/i18n-react'; import type { APSettingsType } from 'types'; import { APProvisionMode } from 'types'; import { numberValue, updateValueDirty, useRest } from 'utils'; -import { createAPSettingsValidator, validate } from 'validators'; +import { ValidationError, createAPSettingsValidator, validate } from 'validators'; export const isAPEnabled = ({ provision_mode }: APSettingsType) => provision_mode === APProvisionMode.AP_MODE_ALWAYS || @@ -86,7 +86,7 @@ const APSettings = () => { await validate(createAPSettingsValidator(data), data); await saveData(); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [data, saveData]); diff --git a/interface/src/app/settings/ApplicationSettings.tsx b/interface/src/app/settings/ApplicationSettings.tsx index 247db2d45..ce985530b 100644 --- a/interface/src/app/settings/ApplicationSettings.tsx +++ b/interface/src/app/settings/ApplicationSettings.tsx @@ -33,7 +33,7 @@ import { } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { numberValue, updateValueDirty, useRest } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import { API, getBoardProfile, readSettings, writeSettings } from '../../api/app'; import { BOARD_PROFILES } from '../main/types'; @@ -153,7 +153,7 @@ const ApplicationSettings = () => { setFieldErrors(undefined); await validate(createSettingsValidator(data), data); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } finally { await saveData(); } diff --git a/interface/src/app/settings/MqttSettings.tsx b/interface/src/app/settings/MqttSettings.tsx index a2ae1c236..417fa8190 100644 --- a/interface/src/app/settings/MqttSettings.tsx +++ b/interface/src/app/settings/MqttSettings.tsx @@ -31,7 +31,7 @@ import { import { useI18nContext } from 'i18n/i18n-react'; import type { MqttSettingsType } from 'types'; import { numberValue, updateValueDirty, useRest } from 'utils'; -import { createMqttSettingsValidator, validate } from 'validators'; +import { ValidationError, createMqttSettingsValidator, validate } from 'validators'; import { callAction } from '../../api/app'; @@ -94,7 +94,7 @@ const MqttSettings = () => { await validate(createMqttSettingsValidator(data), data); await saveData(); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [data, saveData]); diff --git a/interface/src/app/settings/NTPSettings.tsx b/interface/src/app/settings/NTPSettings.tsx index 9b36e417d..ff517a266 100644 --- a/interface/src/app/settings/NTPSettings.tsx +++ b/interface/src/app/settings/NTPSettings.tsx @@ -36,7 +36,7 @@ import { import { useI18nContext } from 'i18n/i18n-react'; import type { NTPSettingsType, Time } from 'types'; import { formatLocalDateTime, updateValueDirty, useRest } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import { NTP_SETTINGS_VALIDATOR } from 'validators/ntp'; import { TIME_ZONES, selectedTimeZone, useTimeZoneSelectItems } from './TZ'; @@ -133,7 +133,7 @@ const NTPSettings = () => { await validate(NTP_SETTINGS_VALIDATOR, data); await saveData(); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [data, saveData]); diff --git a/interface/src/app/settings/network/NetworkSettings.tsx b/interface/src/app/settings/network/NetworkSettings.tsx index 92651c654..5f96aa594 100644 --- a/interface/src/app/settings/network/NetworkSettings.tsx +++ b/interface/src/app/settings/network/NetworkSettings.tsx @@ -40,7 +40,7 @@ import { import { useI18nContext } from 'i18n/i18n-react'; import type { NetworkSettingsType } from 'types'; import { updateValueDirty, useRest } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; import { createNetworkSettingsValidator } from 'validators/network'; import SystemMonitor from '../../status/SystemMonitor'; @@ -116,7 +116,7 @@ const NetworkSettings = () => { await validate(createNetworkSettingsValidator(data), data); await saveData(); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } deselectNetwork(); }, [data, saveData, deselectNetwork]); diff --git a/interface/src/app/settings/security/SecuritySettings.tsx b/interface/src/app/settings/security/SecuritySettings.tsx index b894a0e0a..117a84467 100644 --- a/interface/src/app/settings/security/SecuritySettings.tsx +++ b/interface/src/app/settings/security/SecuritySettings.tsx @@ -19,7 +19,7 @@ import { AuthenticatedContext } from 'contexts/authentication'; import { useI18nContext } from 'i18n/i18n-react'; import type { SecuritySettingsType } from 'types'; import { updateValueDirty, useRest } from 'utils'; -import { SECURITY_SETTINGS_VALIDATOR, validate } from 'validators'; +import { SECURITY_SETTINGS_VALIDATOR, ValidationError, validate } from 'validators'; const SecuritySettings = () => { const { LL } = useI18nContext(); @@ -58,7 +58,7 @@ const SecuritySettings = () => { await saveData(); await authenticatedContext.refresh(); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } }, [data, saveData, authenticatedContext]); diff --git a/interface/src/app/settings/security/User.tsx b/interface/src/app/settings/security/User.tsx index 68f740647..bf1ce8862 100644 --- a/interface/src/app/settings/security/User.tsx +++ b/interface/src/app/settings/security/User.tsx @@ -24,7 +24,7 @@ import { import { useI18nContext } from 'i18n/i18n-react'; import type { UserType } from 'types'; import { updateValue } from 'utils'; -import { validate } from 'validators'; +import { ValidationError, validate } from 'validators'; interface UserFormProps { creating: boolean; @@ -69,7 +69,7 @@ const User: FC = ({ await validate(validator, user); onDoneEditing(); } catch (error) { - setFieldErrors(error as ValidateFieldsError); + setFieldErrors((error as ValidationError).fieldErrors); } } }, [user, validator, onDoneEditing]); diff --git a/interface/src/validators/shared.ts b/interface/src/validators/shared.ts index d1132d184..a0da4beb3 100644 --- a/interface/src/validators/shared.ts +++ b/interface/src/validators/shared.ts @@ -1,6 +1,20 @@ -import type { InternalRuleItem, ValidateOption } from 'async-validator'; +import type { + InternalRuleItem, + ValidateFieldsError, + ValidateOption +} from 'async-validator'; import type Schema from 'async-validator'; +export class ValidationError extends Error { + readonly fieldErrors: ValidateFieldsError; + + constructor(fieldErrors: ValidateFieldsError) { + super('Validation failed'); + this.name = 'ValidationError'; + this.fieldErrors = fieldErrors; + } +} + export const validate = ( validator: Schema, source: Partial, @@ -8,7 +22,7 @@ export const validate = ( ): Promise => new Promise((resolve, reject) => { void validator.validate(source, options ?? {}, (errors, fieldErrors) => { - errors ? reject(fieldErrors as Error) : resolve(source as T); + errors ? reject(new ValidationError(fieldErrors)) : resolve(source as T); }); }); From db2be70d66bd0e6ff55ab5d431042387e95ea7b0 Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Wed, 22 Apr 2026 14:22:25 +0000 Subject: [PATCH 149/162] chore: update generated files for v3.8.2-dev.18 --- docs/dump_telegrams.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 8b0173331..f9b84239e 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -171,6 +171,7 @@ telegram_type_id,name,is_fetched 0x0468,HPSet, 0x0469,HPSet, 0x046A,HPSet, +0x0470,RC300Summer2, 0x0471,RC300Summer2, 0x0472,RC300Summer2, 0x0473,RC300Summer2, @@ -178,7 +179,6 @@ telegram_type_id,name,is_fetched 0x0475,RC300Summer2, 0x0476,RC300Summer2, 0x0477,RC300Summer2, -0x0478,RC300Summer2, 0x047B,HP2, 0x0484,HPSilentMode,fetched 0x0485,HpCooling,fetched From 6edbac86e203ca306b05b707e359e10ffdd43c8d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 24 Apr 2026 14:46:53 +0200 Subject: [PATCH 150/162] fix legegram length, #2969 --- src/devices/thermostat.cpp | 2 +- src/emsesp_version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index aa909b515..ceba2fc86 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -173,7 +173,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i for (uint8_t i = 0; i < monitor_size; i++) { register_telegram_type(monitor_typeids[i], "RC300Monitor", false, MAKE_PF_CB(process_RC300Monitor), 33); register_telegram_type(set_typeids[i], "RC300Set", false, MAKE_PF_CB(process_RC300Set), 29); - register_telegram_type(summer_typeids[i], "RC300Summer", false, MAKE_PF_CB(process_RC300Summer), 13); + register_telegram_type(summer_typeids[i], "RC300Summer", false, MAKE_PF_CB(process_RC300Summer), 14); register_telegram_type(curve_typeids[i], "RC300Curves", false, MAKE_PF_CB(process_RC300Curve), 9); register_telegram_type(summer2_typeids[i], "RC300Summer2", false, MAKE_PF_CB(process_RC300Summer2), 8); } diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 4909b018f..c98cd567e 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.18" +#define EMSESP_APP_VERSION "3.8.2-dev.19" From 14351436a77f6ffaf14ac6363f5f55ac2971c664 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 5 May 2026 10:33:56 +0200 Subject: [PATCH 151/162] fixes #3055, revert commit daffdcf --- src/devices/thermostat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index ceba2fc86..ebbb2e686 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -166,7 +166,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set2_typeids = {0x0421, 0x0422, 0x0423, 0x0424}; summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6}; curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x02A0, 0x02A1, 0x02A2}; - summer2_typeids = {0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; + summer2_typeids = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; hp_typeids = {0x0467, 0x0468, 0x0469, 0x046A}; hpmode_typeids = {0x0291, 0x0292, 0x0293, 0x0294}; const size_t monitor_size = monitor_typeids.size(); From b5014bf9aca5b6b291ae22ab328c6b321905aa92 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 5 May 2026 17:51:52 +0200 Subject: [PATCH 152/162] dev.20, check and set 0x470 to summer2_typeids[0] ony if received. #2686 --- CHANGELOG_LATEST.md | 1 + src/devices/thermostat.cpp | 9 ++++++++- src/emsesp_version.h | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index e0405527a..343aca6e7 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -34,3 +34,4 @@ For more details go to [emsesp.org](https://emsesp.org/). - fetch telegrams: set length to fetch [#3017](https://github.com/emsesp/EMS-ESP32/issues/3017) - move http client from stack to heap - heap optimizations [#3021](https://github.com/emsesp/EMS-ESP32/discussions/3021) +- check and read 0x470 as summer2_typeids[0] only if received [#2686](https://github.com/emsesp/EMS-ESP32/issues/2686), [#3055](https://github.com/emsesp/EMS-ESP32/issues/3055) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index ebbb2e686..824897496 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -207,6 +207,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent), 1); register_telegram_type(0xBF, "ErrorMessage", false, MAKE_PF_CB(process_ErrorMessageBF)); register_telegram_type(0xC0, "RCErrorMessage", false, MAKE_PF_CB(process_RCErrorMessage2)); + register_telegram_type(0x470, "RC300Summer2", true, MAKE_PF_CB(process_RC300Summer2), 8); EMSESP::send_read_request(0xC0, device_id, 0, 20); // read last errorcode on start (only published on errors) // JUNKERS/HT3 @@ -1268,7 +1269,13 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { void Thermostat::process_RC300Summer2(std::shared_ptr telegram) { auto hc = heating_circuit(telegram); if (hc == nullptr) { - return; + // telegram 0x470 see https://github.com/emsesp/EMS-ESP32/issues/2686 + if (telegram->type_id == 0x470 && telegram->message_length > 2) { + hc = heating_circuit(1); + summer2_typeids[0] = 0x470; + } else { + return; + } } if (hc->statusbyte & 1) { has_update(telegram, hc->summersetmode, 0); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index c98cd567e..e7b3ea13f 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.19" +#define EMSESP_APP_VERSION "3.8.2-dev.20" From 58da1572720d78243ce62431192907933d677459 Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Tue, 5 May 2026 16:04:29 +0000 Subject: [PATCH 153/162] chore: update generated files for v3.8.2-dev.20 --- docs/dump_telegrams.csv | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index f9b84239e..4a5053260 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -112,10 +112,10 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,RC300Monitor,fetched -0x02A6,CRFMonitor, +0x02A5,RC300Monitor, +0x02A6,RC300Monitor, 0x02A7,RC300Monitor, -0x02A8,CRFMonitor, +0x02A8,RC300Monitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, 0x02AB,RC300Monitor, @@ -171,7 +171,7 @@ telegram_type_id,name,is_fetched 0x0468,HPSet, 0x0469,HPSet, 0x046A,HPSet, -0x0470,RC300Summer2, +0x0470,RC300Summer2,fetched 0x0471,RC300Summer2, 0x0472,RC300Summer2, 0x0473,RC300Summer2, @@ -179,6 +179,7 @@ telegram_type_id,name,is_fetched 0x0475,RC300Summer2, 0x0476,RC300Summer2, 0x0477,RC300Summer2, +0x0478,RC300Summer2, 0x047B,HP2, 0x0484,HPSilentMode,fetched 0x0485,HpCooling,fetched From ca0f32b0876081bc04eecc9042ea17d0d071c2c2 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 5 May 2026 20:44:34 +0200 Subject: [PATCH 154/162] update pkg --- interface/package.json | 14 +- interface/pnpm-lock.yaml | 514 +++++++++++++++++++-------------------- platformio.ini | 6 +- 3 files changed, 267 insertions(+), 267 deletions(-) diff --git a/interface/package.json b/interface/package.json index d2d955b19..e0e8e09e4 100644 --- a/interface/package.json +++ b/interface/package.json @@ -41,7 +41,7 @@ "react": "^19.2.5", "react-dom": "^19.2.5", "react-icons": "^5.6.0", - "react-router": "^7.14.2", + "react-router": "^7.15.0", "react-toastify": "^11.1.0", "typesafe-i18n": "^5.27.1", "typescript": "^6.0.3" @@ -55,17 +55,17 @@ "@types/node": "^25.6.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "axe-core": "^4.11.3", + "axe-core": "^4.11.4", "concurrently": "^9.2.1", - "eslint": "^10.2.1", + "eslint": "^10.3.0", "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.3", "rollup-plugin-visualizer": "^7.0.1", - "terser": "^5.46.1", - "typescript-eslint": "^8.59.0", - "vite": "^8.0.9", + "terser": "^5.46.2", + "typescript-eslint": "^8.59.2", + "vite": "^8.0.10", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, - "packageManager": "pnpm@10.33.1+sha512.05ba3c1d5d1c18f68df06470d74055e62d41fc110a0c660db1b2dfb2785327f04cf0f68345d4609bc52089e7fa0343c31593b2f9594e2c5d5da426230acc9820" + "packageManager": "pnpm@10.33.3" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 735cfd2c5..ebbfa8ee5 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -63,8 +63,8 @@ importers: specifier: ^5.6.0 version: 5.6.0(react@19.2.5) react-router: - specifier: ^7.14.2 - version: 7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^7.15.0 + version: 7.15.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-toastify: specifier: ^11.1.0 version: 11.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -80,10 +80,10 @@ importers: version: 7.29.0 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.2.1) + version: 10.0.1(eslint@10.3.0) '@preact/preset-vite': specifier: ^2.10.5 - version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.3) @@ -97,38 +97,38 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) axe-core: - specifier: ^4.11.3 - version: 4.11.3 + specifier: ^4.11.4 + version: 4.11.4 concurrently: specifier: ^9.2.1 version: 9.2.1 eslint: - specifier: ^10.2.1 - version: 10.2.1 + specifier: ^10.3.0 + version: 10.3.0 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.2.1) + version: 10.1.8(eslint@10.3.0) prettier: specifier: ^3.8.3 version: 3.8.3 rollup-plugin-visualizer: specifier: ^7.0.1 - version: 7.0.1(rolldown@1.0.0-rc.16)(rollup@4.59.0) + version: 7.0.1(rolldown@1.0.0-rc.17)(rollup@4.59.0) terser: - specifier: ^5.46.1 - version: 5.46.1 + specifier: ^5.46.2 + version: 5.46.2 typescript-eslint: - specifier: ^8.59.0 - version: 8.59.0(eslint@10.2.1)(typescript@6.0.3) + specifier: ^8.59.2 + version: 8.59.2(eslint@10.3.0)(typescript@6.0.3) vite: - specifier: ^8.0.9 - version: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + specifier: ^8.0.10 + version: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 0.6.1(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) packages: @@ -144,8 +144,8 @@ packages: resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} '@babel/core@7.29.0': @@ -198,8 +198,8 @@ packages: resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true @@ -237,11 +237,11 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@emnapi/core@1.9.2': - resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/runtime@1.9.2': - resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -653,8 +653,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.126.0': - resolution: {integrity: sha512-oGfVtjAgwQVVpfBrbtk4e1XDyWHRFta6BS3GWVzrF8xYBT2VGQAk39yJS/wFSMrZqoiCU4oghT3Ch0HaHGIHcQ==} + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} @@ -690,103 +690,103 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' - '@rolldown/binding-android-arm64@1.0.0-rc.16': - resolution: {integrity: sha512-rhY3k7Bsae9qQfOtph2Pm2jZEA+s8Gmjoz4hhmx70K9iMQ/ddeae+xhRQcM5IuVx5ry1+bGfkvMn7D6MJggVSA==} + '@rolldown/binding-android-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.16': - resolution: {integrity: sha512-rNz0yK078yrNn3DrdgN+PKiMOW8HfQ92jQiXxwX8yW899ayV00MLVdaCNeVBhG/TbH3ouYVObo8/yrkiectkcQ==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.16': - resolution: {integrity: sha512-r/OmdR00HmD4i79Z//xO06uEPOq5hRXdhw7nzkxQxwSavs3PSHa1ijntdpOiZ2mzOQ3fVVu8C1M19FoNM+dMUQ==} + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.16': - resolution: {integrity: sha512-KcRE5w8h0OnjUatG8pldyD14/CQ5Phs1oxfR+3pKDjboHRo9+MkqQaiIZlZRpsxC15paeXme/I127tUa9TXJ6g==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16': - resolution: {integrity: sha512-bT0guA1bpxEJ/ZhTRniQf7rNF8ybvXOuWbNIeLABaV5NGjx4EtOWBTSRGWFU9ZWVkPOZ+HNFP8RMcBokBiZ0Kg==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16': - resolution: {integrity: sha512-+tHktCHWV8BDQSjemUqm/Jl/TPk3QObCTIjmdDy/nlupcujZghmKK2962LYrqFpWu+ai01AN/REOH3NEpqvYQg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16': - resolution: {integrity: sha512-3fPzdREH806oRLxpTWW1Gt4tQHs0TitZFOECB2xzCFLPKnSOy90gwA7P29cksYilFO6XVRY1kzga0cL2nRjKPg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16': - resolution: {integrity: sha512-EKwI1tSrLs7YVw+JPJT/G2dJQ1jl9qlTTTEG0V2Ok/RdOenRfBw2PQdLPyjhIu58ocdBfP7vIRN/pvMsPxs/AQ==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16': - resolution: {integrity: sha512-Uknladnb3Sxqu6SEcqBldQyJUpk8NleooZEc0MbRBJ4inEhRYWZX0NJu12vNf2mqAq7gsofAxHrGghiUYjhaLQ==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16': - resolution: {integrity: sha512-FIb8+uG49sZBtLTn+zt1AJ20TqVcqWeSIyoVt0or7uAWesgKaHbiBh6OpA/k9v0LTt+PTrb1Lao133kP4uVxkg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.16': - resolution: {integrity: sha512-RuERhF9/EgWxZEXYWCOaViUWHIboceK4/ivdtQ3R0T44NjLkIIlGIAVAuCddFxsZ7vnRHtNQUrt2vR2n2slB2w==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.16': - resolution: {integrity: sha512-mXcXnvd9GpazCxeUCCnZ2+YF7nut+ZOEbE4GtaiPtyY6AkhZWbK70y1KK3j+RDhjVq5+U8FySkKRb/+w0EeUwA==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.16': - resolution: {integrity: sha512-3Q2KQxnC8IJOLqXmUMoYwyIPZU9hzRbnHaoV3Euz+VVnjZKcY8ktnNP8T9R4/GGQtb27C/UYKABxesKWb8lsvQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16': - resolution: {integrity: sha512-tj7XRemQcOcFwv7qhpUxMTBbI5mWMlE4c1Omhg5+h8GuLXzyj8HviYgR+bB2DMDgRqUE+jiDleqSCRjx4aYk/Q==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16': - resolution: {integrity: sha512-PH5DRZT+F4f2PTXRXR8uJxnBq2po/xFtddyabTJVJs/ZYVHqXPEgNIr35IHTEa6bpa0Q8Awg+ymkTaGnKITw4g==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.16': - resolution: {integrity: sha512-45+YtqxLYKDWQouLKCrpIZhke+nXxhsw+qAHVzHDVwttyBlHNBVs2K25rDXrZzhpTp9w1FlAlvweV1H++fdZoA==} + '@rolldown/pluginutils@1.0.0-rc.17': + resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -969,8 +969,8 @@ packages: svelte: optional: true - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -1040,63 +1040,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.59.0': - resolution: {integrity: sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==} + '@typescript-eslint/eslint-plugin@8.59.2': + resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.59.0 + '@typescript-eslint/parser': ^8.59.2 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.59.0': - resolution: {integrity: sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==} + '@typescript-eslint/parser@8.59.2': + resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.59.0': - resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==} + '@typescript-eslint/project-service@8.59.2': + resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.59.0': - resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} + '@typescript-eslint/scope-manager@8.59.2': + resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.59.0': - resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} + '@typescript-eslint/tsconfig-utils@8.59.2': + resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.59.0': - resolution: {integrity: sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==} + '@typescript-eslint/type-utils@8.59.2': + resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.59.0': - resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==} + '@typescript-eslint/types@8.59.2': + resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.59.0': - resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} + '@typescript-eslint/typescript-estree@8.59.2': + resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.59.0': - resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} + '@typescript-eslint/utils@8.59.2': + resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.59.0': - resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} + '@typescript-eslint/visitor-keys@8.59.2': + resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1109,8 +1109,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} alova@3.5.1: resolution: {integrity: sha512-avrWPyFFWW51YLoy0S3OleNw1BV0GqNI+DSdWHfFbAoKZp80cXCCc7OtjA6OWeyhCOMglUMwo9O8j5huwnzFtQ==} @@ -1165,8 +1165,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.11.3: - resolution: {integrity: sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==} + axe-core@4.11.4: + resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==} engines: {node: '>=4'} babel-plugin-macros@3.1.0: @@ -1188,8 +1188,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.20: - resolution: {integrity: sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==} + baseline-browser-mapping@2.10.27: + resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==} engines: {node: '>=6.0.0'} hasBin: true @@ -1287,8 +1287,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001790: - resolution: {integrity: sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==} + caniuse-lite@1.0.30001791: + resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1523,8 +1523,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.343: - resolution: {integrity: sha512-YHnQ3MXI08icvL9ZKnEBy05F2EQ8ob01UaMOuMbM8l+4UcAq6MPPbBTJBbsBUg3H8JeZNt+O4fjsoWth3p6IFg==} + electron-to-chromium@1.5.351: + resolution: {integrity: sha512-9D7Iqx8RImSvCnOsj86rCH6eQjZFQoM04Jn6HnZVM0Nu/G58/gmKYQ1d12MZTbjQbQSTGI8nwEy07ErsA2slLA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1717,8 +1717,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.2.1: - resolution: {integrity: sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==} + eslint@10.3.0: + resolution: {integrity: sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2134,8 +2134,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} is-cwebp-readable@3.0.0: @@ -2503,8 +2503,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2721,8 +2721,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.10: - resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} powershell-utils@0.1.0: @@ -2794,8 +2794,8 @@ packages: react-is@19.2.5: resolution: {integrity: sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ==} - react-router@7.14.2: - resolution: {integrity: sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==} + react-router@7.15.0: + resolution: {integrity: sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -2881,8 +2881,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.16: - resolution: {integrity: sha512-rzi5WqKzEZw3SooTt7cgm4eqIoujPIyGcJNGFL7iPEuajQw7vxMHUkXylu4/vhCkJGXsgRmxqMKXUpT6FEgl0g==} + rolldown@1.0.0-rc.17: + resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3040,9 +3040,9 @@ packages: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - stack-trace@1.0.0-pre2: - resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==} - engines: {node: '>=16'} + stack-trace@1.0.0: + resolution: {integrity: sha512-H6D7134xi6qONvh7ZHKgviXf+rd3vhGBSvebPZCaUkd8zvQ+7PtDw6CljPTe4cXWNf2IKZGNqw6VJXSb9IgBpA==} + engines: {node: '>=20.0.0'} strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} @@ -3134,8 +3134,8 @@ packages: resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==} engines: {node: '>=4'} - terser@5.46.1: - resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} + terser@5.46.2: + resolution: {integrity: sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==} engines: {node: '>=10'} hasBin: true @@ -3210,8 +3210,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.59.0: - resolution: {integrity: sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==} + typescript-eslint@8.59.2: + resolution: {integrity: sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3258,7 +3258,7 @@ packages: uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true validate-npm-package-license@3.0.4: @@ -3279,8 +3279,8 @@ packages: peerDependencies: vite: '*' - vite@8.0.9: - resolution: {integrity: sha512-t7g7GVRpMXjNpa67HaVWI/8BWtdVIQPCL2WoozXXA7LBGEFK4AkkKkHx2hAQf5x1GZSlcmEDPkVLSGahxnEEZw==} + vite@8.0.10: + resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3413,7 +3413,7 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.0': {} + '@babel/compat-data@7.29.3': {} '@babel/core@7.29.0': dependencies: @@ -3422,7 +3422,7 @@ snapshots: '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -3437,7 +3437,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -3449,7 +3449,7 @@ snapshots: '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.2 lru-cache: 5.1.1 @@ -3486,7 +3486,7 @@ snapshots: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.2': + '@babel/parser@7.29.3': dependencies: '@babel/types': 7.29.0 @@ -3518,7 +3518,7 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -3526,7 +3526,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -3538,13 +3538,13 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@emnapi/core@1.9.2': + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.2': + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true @@ -3718,9 +3718,9 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.2.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0)': dependencies: - eslint: 10.2.1 + eslint: 10.3.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3741,9 +3741,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.2.1)': + '@eslint/js@10.0.1(eslint@10.3.0)': optionalDependencies: - eslint: 10.2.1 + eslint: 10.3.0 '@eslint/object-schema@3.0.5': {} @@ -3879,11 +3879,11 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 optional: true '@noble/hashes@1.8.0': {} @@ -3900,7 +3900,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.126.0': {} + '@oxc-project/types@0.127.0': {} '@paralleldrive/cuid2@2.3.1': dependencies: @@ -3912,19 +3912,19 @@ snapshots: dependencies: preact: 10.29.1 - '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': + '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) - vite-prerender-plugin: 0.5.13(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)) + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) + vite-prerender-plugin: 0.5.13(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -3939,7 +3939,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1))': + '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3947,60 +3947,60 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.1 - vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) transitivePeerDependencies: - supports-color - '@rolldown/binding-android-arm64@1.0.0-rc.16': + '@rolldown/binding-android-arm64@1.0.0-rc.17': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.16': + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.16': + '@rolldown/binding-darwin-x64@1.0.0-rc.17': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.16': + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.16': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.16': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.16': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': optional: true - '@rolldown/pluginutils@1.0.0-rc.16': {} + '@rolldown/pluginutils@1.0.0-rc.17': {} '@rollup/pluginutils@4.2.1': dependencies: @@ -4104,7 +4104,7 @@ snapshots: '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3)': dependencies: '@babel/generator': 7.29.1 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 @@ -4115,7 +4115,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tybys/wasm-util@0.10.1': + '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 optional: true @@ -4196,15 +4196,15 @@ snapshots: dependencies: '@types/node': 25.6.0 - '@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0)(typescript@6.0.3))(eslint@10.3.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/type-utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.0 - eslint: 10.2.1 + '@typescript-eslint/parser': 8.59.2(eslint@10.3.0)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@10.3.0)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.2 + eslint: 10.3.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -4212,56 +4212,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/parser@8.59.2(eslint@10.3.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.2 debug: 4.4.3 - eslint: 10.2.1 + eslint: 10.3.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.59.2(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) - '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) + '@typescript-eslint/types': 8.59.2 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.59.0': + '@typescript-eslint/scope-manager@8.59.2': dependencies: - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 - '@typescript-eslint/tsconfig-utils@8.59.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.59.0(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.59.2(eslint@10.3.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@10.3.0)(typescript@6.0.3) debug: 4.4.3 - eslint: 10.2.1 + eslint: 10.3.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.59.0': {} + '@typescript-eslint/types@8.59.2': {} - '@typescript-eslint/typescript-estree@8.59.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.59.2(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.59.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/project-service': 8.59.2(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 @@ -4271,20 +4271,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.0(eslint@10.2.1)(typescript@6.0.3)': + '@typescript-eslint/utils@8.59.2(eslint@10.3.0)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - eslint: 10.2.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + eslint: 10.3.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.59.0': + '@typescript-eslint/visitor-keys@8.59.2': dependencies: - '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/types': 8.59.2 eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.16.0): @@ -4293,7 +4293,7 @@ snapshots: acorn@8.16.0: {} - ajv@6.14.0: + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -4337,7 +4337,7 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axe-core@4.11.3: {} + axe-core@4.11.4: {} babel-plugin-macros@3.1.0: dependencies: @@ -4355,7 +4355,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.20: {} + baseline-browser-mapping@2.10.27: {} bin-build@3.0.0: dependencies: @@ -4416,9 +4416,9 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.20 - caniuse-lite: 1.0.30001790 - electron-to-chromium: 1.5.343 + baseline-browser-mapping: 2.10.27 + caniuse-lite: 1.0.30001791 + electron-to-chromium: 1.5.351 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4480,7 +4480,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001790: {} + caniuse-lite@1.0.30001791: {} caw@2.0.1: dependencies: @@ -4782,7 +4782,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.343: {} + electron-to-chromium@1.5.351: {} emoji-regex@10.6.0: {} @@ -4928,9 +4928,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.2.1): + eslint-config-prettier@10.1.8(eslint@10.3.0): dependencies: - eslint: 10.2.1 + eslint: 10.3.0 eslint-scope@9.1.2: dependencies: @@ -4943,9 +4943,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.2.1: + eslint@10.3.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.5.5 @@ -4955,7 +4955,7 @@ snapshots: '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 6.14.0 + ajv: 6.15.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 @@ -5442,7 +5442,7 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.16.1: + is-core-module@2.16.2: dependencies: hasown: 2.0.3 @@ -5743,7 +5743,7 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.11: {} + nanoid@3.3.12: {} natural-compare@1.4.0: {} @@ -5940,9 +5940,9 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.10: + postcss@8.5.14: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -6000,7 +6000,7 @@ snapshots: react-is@19.2.5: {} - react-router@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-router@7.15.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: cookie: 1.1.1 react: 19.2.5 @@ -6076,7 +6076,7 @@ snapshots: resolve@1.22.12: dependencies: es-errors: 1.3.0 - is-core-module: 2.16.1 + is-core-module: 2.16.2 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -6090,35 +6090,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.16: + rolldown@1.0.0-rc.17: dependencies: - '@oxc-project/types': 0.126.0 - '@rolldown/pluginutils': 1.0.0-rc.16 + '@oxc-project/types': 0.127.0 + '@rolldown/pluginutils': 1.0.0-rc.17 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.16 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.16 - '@rolldown/binding-darwin-x64': 1.0.0-rc.16 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.16 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.16 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.16 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.16 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.16 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.16 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.16 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.16 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.16 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.16 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.16 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.16 + '@rolldown/binding-android-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-x64': 1.0.0-rc.17 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.16)(rollup@4.59.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.17)(rollup@4.59.0): dependencies: open: 11.0.0 picomatch: 4.0.4 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: - rolldown: 1.0.0-rc.16 + rolldown: 1.0.0-rc.17 rollup: 4.59.0 rollup@4.59.0: @@ -6267,7 +6267,7 @@ snapshots: stable@0.1.8: {} - stack-trace@1.0.0-pre2: {} + stack-trace@1.0.0: {} strict-uri-encode@1.1.0: {} @@ -6362,7 +6362,7 @@ snapshots: temp-dir: 1.0.0 uuid: 3.4.0 - terser@5.46.1: + terser@5.46.2: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -6426,13 +6426,13 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.59.0(eslint@10.2.1)(typescript@6.0.3): + typescript-eslint@8.59.2(eslint@10.3.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3))(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - eslint: 10.2.1 + '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0)(typescript@6.0.3))(eslint@10.3.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.2(eslint@10.3.0)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@10.3.0)(typescript@6.0.3) + eslint: 10.3.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -6477,7 +6477,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-plugin-imagemin@0.6.1(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6502,42 +6502,42 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-prerender-plugin@0.5.13(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 node-html-parser: 6.1.13 simple-code-frame: 1.3.0 source-map: 0.7.6 - stack-trace: 1.0.0-pre2 - vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + stack-trace: 1.0.0 + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) - vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@6.0.3) - vite: 8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1) + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) transitivePeerDependencies: - supports-color - typescript - vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.1): + vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.10 - rolldown: 1.0.0-rc.16 + postcss: 8.5.14 + rolldown: 1.0.0-rc.17 tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.6.0 esbuild: 0.27.4 fsevents: 2.3.3 - terser: 5.46.1 + terser: 5.46.2 which-typed-array@1.1.20: dependencies: diff --git a/platformio.ini b/platformio.ini index c94e1383f..241af2c71 100644 --- a/platformio.ini +++ b/platformio.ini @@ -59,7 +59,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 -platform = espressif32@6.13.0 ; Arduino Core 2.0.17 / IDF 4.4.7 +platform = espressif32@7.0.0 ; Arduino Core 2.0.17 / IDF 4.4.7 ; 32MB Flash variants [espressif32_base_32M] @@ -67,7 +67,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv board_upload.flash_size = 32MB board_build.app_partition_name = app0 -platform = espressif32@6.13.0 ; Arduino Core 2.0.17 / IDF 4.4.7 +platform = espressif32@7.0.0 ; Arduino Core 2.0.17 / IDF 4.4.7 ; use Tasmota's library for 4MB Flash variants. ; Removes libs (like mbedtsl, so no WiFi_secure.h) to increase available heap @@ -105,7 +105,7 @@ board_build.filesystem = littlefs lib_deps = bblanchon/ArduinoJson @ 7.4.3 ESP32Async/AsyncTCP @ 3.4.10 - ESP32Async/ESPAsyncWebServer @ 3.10.3 + ESP32Async/ESPAsyncWebServer @ 3.11.0 ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 ; builds the web interface only, not the firmware From ae5beccb9db8553302d608342f5f69da8bf59863 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 7 May 2026 12:02:33 +0200 Subject: [PATCH 155/162] dev.20, fixes #3064, handling of optional gpios --- CHANGELOG_LATEST.md | 1 + interface/package.json | 14 +- interface/pnpm-lock.yaml | 438 +++++++++++++------------ src/ESP32React/MqttSettingsService.cpp | 4 + src/core/system.cpp | 69 ++-- src/core/system.h | 3 + src/emsesp_version.h | 2 +- src/web/WebCustomEntityService.cpp | 2 + src/web/WebSchedulerService.cpp | 2 + src/web/WebSettingsService.cpp | 30 +- src/web/WebSettingsService.h | 17 +- 11 files changed, 314 insertions(+), 268 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 343aca6e7..9c67e875d 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -20,6 +20,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - SRC climate creation [#2936](https://github.com/emsesp/EMS-ESP32/issues/2936) and [#2960](https://github.com/emsesp/EMS-ESP32/issues/2960) - missing translations [#3015](https://github.com/emsesp/EMS-ESP32/issues/3015) - custom entities check fetch length +- modbus initialization [#3064](https://github.com/emsesp/EMS-ESP32/issues/3064) ## Changed diff --git a/interface/package.json b/interface/package.json index e0e8e09e4..10917ffaf 100644 --- a/interface/package.json +++ b/interface/package.json @@ -26,8 +26,8 @@ "@alova/adapter-xhr": "2.3.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@mui/icons-material": "^9.0.0", - "@mui/material": "^9.0.0", + "@mui/icons-material": "^9.0.1", + "@mui/material": "^9.0.1", "@preact/compat": "^18.3.2", "@table-library/react-table-library": "4.1.15", "alova": "3.5.1", @@ -38,8 +38,8 @@ "magic-string": "^0.30.21", "mime-types": "^3.0.2", "preact": "^10.29.1", - "react": "^19.2.5", - "react-dom": "^19.2.5", + "react": "^19.2.6", + "react-dom": "^19.2.6", "react-icons": "^5.6.0", "react-router": "^7.15.0", "react-toastify": "^11.1.0", @@ -61,11 +61,11 @@ "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.3", "rollup-plugin-visualizer": "^7.0.1", - "terser": "^5.46.2", + "terser": "^5.47.0", "typescript-eslint": "^8.59.2", - "vite": "^8.0.10", + "vite": "^8.0.11", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, - "packageManager": "pnpm@10.33.3" + "packageManager": "pnpm@10.33.4" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index ebbfa8ee5..261281351 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -13,22 +13,22 @@ importers: version: 2.3.1(alova@3.5.1) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.2.14)(react@19.2.5) + version: 11.14.0(@types/react@19.2.14)(react@19.2.6) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) '@mui/icons-material': - specifier: ^9.0.0 - version: 9.0.0(@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) + specifier: ^9.0.1 + version: 9.0.1(@mui/material@9.0.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) '@mui/material': - specifier: ^9.0.0 - version: 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^9.0.1 + version: 9.0.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@preact/compat': specifier: ^18.3.2 version: 18.3.2(preact@10.29.1) '@table-library/react-table-library': specifier: 4.1.15 - version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6) alova: specifier: 3.5.1 version: 3.5.1 @@ -54,20 +54,20 @@ importers: specifier: ^10.29.1 version: 10.29.1 react: - specifier: ^19.2.5 - version: 19.2.5 + specifier: ^19.2.6 + version: 19.2.6 react-dom: - specifier: ^19.2.5 - version: 19.2.5(react@19.2.5) + specifier: ^19.2.6 + version: 19.2.6(react@19.2.6) react-icons: specifier: ^5.6.0 - version: 5.6.0(react@19.2.5) + version: 5.6.0(react@19.2.6) react-router: specifier: ^7.15.0 - version: 7.15.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 7.15.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react-toastify: specifier: ^11.1.0 - version: 11.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 11.1.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) typesafe-i18n: specifier: ^5.27.1 version: 5.27.1(typescript@6.0.3) @@ -83,7 +83,7 @@ importers: version: 10.0.1(eslint@10.3.0) '@preact/preset-vite': specifier: ^2.10.5 - version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) + version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.3) @@ -113,22 +113,22 @@ importers: version: 3.8.3 rollup-plugin-visualizer: specifier: ^7.0.1 - version: 7.0.1(rolldown@1.0.0-rc.17)(rollup@4.59.0) + version: 7.0.1(rolldown@1.0.0-rc.18)(rollup@4.59.0) terser: - specifier: ^5.46.2 - version: 5.46.2 + specifier: ^5.47.0 + version: 5.47.0 typescript-eslint: specifier: ^8.59.2 version: 8.59.2(eslint@10.3.0)(typescript@6.0.3) vite: - specifier: ^8.0.10 - version: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) + specifier: ^8.0.11 + version: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) + version: 0.6.1(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) packages: @@ -540,27 +540,27 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@mui/core-downloads-tracker@9.0.0': - resolution: {integrity: sha512-uwQNGkhv0lf7ufxw6QXev77BW6pWbW+7uxYjU5+rfp4lBkFtMEgJCsarTM3Tn+i0lGx6+Ol2u88JdGXr0GDskA==} + '@mui/core-downloads-tracker@9.0.1': + resolution: {integrity: sha512-GzamIIhZ1bH77dq7eKaeyRgJdkypsxin4jBFq2EMs4lBWRR0LFO1CSVMsoebn/VvjcNrnrOrjy48MkrkQUK2iw==} - '@mui/icons-material@9.0.0': - resolution: {integrity: sha512-oDwyvI6LgjWRC9MBcSGvLkPud9S9ELgSBQFYxa1rYcZn6Br55dn22SyvsPDMsn0G8OndFk53iMT45W5mNqrogw==} + '@mui/icons-material@9.0.1': + resolution: {integrity: sha512-5PRpQjVLTNLyV/2J9J53Yz4R0tVbodG0BQDN2zQI1QBG1OPYM25ar+4N20eyFOfJT6zKglLzsnU70+zdVLaTkw==} engines: {node: '>=14.0.0'} peerDependencies: - '@mui/material': ^9.0.0 + '@mui/material': ^9.0.1 '@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 - '@mui/material@9.0.0': - resolution: {integrity: sha512-+VP/oQCDhDR87NQQgXnNBG8dwy6GNuQLnenS1pZvkbn2dKFSxRSRMybTpH9xUxXP+316mlYDy5CSbYtusnCWtw==} + '@mui/material@9.0.1': + resolution: {integrity: sha512-voyCpeUxcSWLN7KPZuq0pGCIt726T9K6kiVM3XUcywZDAlZSarLHaUxJVQpospbjjOzN53hwyjo8s6KoWl6utw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^9.0.0 + '@mui/material-pigment-css': ^9.0.1 '@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 @@ -574,8 +574,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@9.0.0': - resolution: {integrity: sha512-JtuZoaiCqwD6vjgYu6Xp3T7DZkrxJlgtDz5yESzhI34fEX5hHMh2VJUbuL9UOg8xrfIFMrq6dcYoH/7Zi4G0RA==} + '@mui/private-theming@9.0.1': + resolution: {integrity: sha512-pSIGq4Yw749KHEwlkYZWVERgHgwJELP6ODtBNUfV8V4oIb5H+h7IQDFXuk/b2oQccODK1enJAtiEzlgLZmq+8g==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -597,8 +597,8 @@ packages: '@emotion/styled': optional: true - '@mui/system@9.0.0': - resolution: {integrity: sha512-YnC5Zg6j04IxiLc/boAKs0464jfZlLFVa7mf5E8lF0XOtZVUvG6R6gJK50lgUYdaaLdyLfxF6xR7LaPuEpeT/g==} + '@mui/system@9.0.1': + resolution: {integrity: sha512-WvlioaLxk6ewUIOfh0StxUvOPDS1mCfzaulcudsL1brZNXuh0N9FMk7RpH7ImJKjEz412SEy/V/yvqmtxbqxCQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -621,8 +621,8 @@ packages: '@types/react': optional: true - '@mui/utils@9.0.0': - resolution: {integrity: sha512-bQcqyg/gjULUqTuyUjSAFr6LQGLvtkNtDbJerAtoUn9kGZ0hg5QJiN1PLHMLbeFpe3te1831uq7GFl2ITokGdg==} + '@mui/utils@9.0.1': + resolution: {integrity: sha512-f3UO3jNN1pYg5zxqXC81Bvv8hx5ACcYc0387382ZI7M5ono1heIwHYLrKsz85myguWdeVKPRZGmDdynWUBjK2g==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -653,8 +653,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.127.0': - resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + '@oxc-project/types@0.128.0': + resolution: {integrity: sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==} '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} @@ -690,103 +690,103 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' - '@rolldown/binding-android-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + '@rolldown/binding-android-arm64@1.0.0-rc.18': + resolution: {integrity: sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.18': + resolution: {integrity: sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.17': - resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + '@rolldown/binding-darwin-x64@1.0.0-rc.18': + resolution: {integrity: sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.17': - resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.18': + resolution: {integrity: sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': - resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18': + resolution: {integrity: sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': - resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18': + resolution: {integrity: sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': - resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.18': + resolution: {integrity: sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.18': + resolution: {integrity: sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': - resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.18': + resolution: {integrity: sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': - resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18': + resolution: {integrity: sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': - resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18': + resolution: {integrity: sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.17': - resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + '@rolldown/pluginutils@1.0.0-rc.18': + resolution: {integrity: sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -978,6 +978,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} @@ -1287,8 +1290,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001791: - resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1523,8 +1526,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.351: - resolution: {integrity: sha512-9D7Iqx8RImSvCnOsj86rCH6eQjZFQoM04Jn6HnZVM0Nu/G58/gmKYQ1d12MZTbjQbQSTGI8nwEy07ErsA2slLA==} + electron-to-chromium@1.5.352: + resolution: {integrity: sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2778,10 +2781,10 @@ packages: rate-limiter-flexible@5.0.5: resolution: {integrity: sha512-+/dSQfo+3FYwYygUs/V2BBdwGa9nFtakDwKt4l0bnvNB53TNT++QSFewwHX9qXrZJuMe9j+TUaU21lm5ARgqdQ==} - react-dom@19.2.5: - resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} + react-dom@19.2.6: + resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} peerDependencies: - react: ^19.2.5 + react: ^19.2.6 react-icons@5.6.0: resolution: {integrity: sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==} @@ -2791,8 +2794,8 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@19.2.5: - resolution: {integrity: sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ==} + react-is@19.2.6: + resolution: {integrity: sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==} react-router@7.15.0: resolution: {integrity: sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==} @@ -2829,8 +2832,8 @@ packages: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react@19.2.5: - resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + react@19.2.6: + resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} engines: {node: '>=0.10.0'} read-pkg-up@1.0.1: @@ -2881,8 +2884,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.17: - resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} + rolldown@1.0.0-rc.18: + resolution: {integrity: sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3134,8 +3137,8 @@ packages: resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==} engines: {node: '>=4'} - terser@5.46.2: - resolution: {integrity: sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==} + terser@5.47.0: + resolution: {integrity: sha512-TV+JFkQFtljk12ffyYAA4+zVF4Hs+qaROsT+Qo9o2/z39x+IUn+pvsmomiCPlp5YigfR1OdbGHOvc0L+Ca1X7g==} engines: {node: '>=10'} hasBin: true @@ -3279,13 +3282,13 @@ packages: peerDependencies: vite: '*' - vite@8.0.10: - resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} + vite@8.0.11: + resolution: {integrity: sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.0 + '@vitejs/devtools': ^0.1.18 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -3586,17 +3589,17 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5)': + '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.5) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.6) '@emotion/utils': 1.4.2 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.2.5 + react: 19.2.6 optionalDependencies: '@types/react': 19.2.14 transitivePeerDependencies: @@ -3612,16 +3615,16 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.5) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.6) '@emotion/utils': 1.4.2 - react: 19.2.5 + react: 19.2.6 optionalDependencies: '@types/react': 19.2.14 transitivePeerDependencies: @@ -3629,9 +3632,9 @@ snapshots: '@emotion/unitless@0.10.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.5)': + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.6)': dependencies: - react: 19.2.5 + react: 19.2.6 '@emotion/utils@1.4.2': {} @@ -3792,47 +3795,47 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@mui/core-downloads-tracker@9.0.0': {} + '@mui/core-downloads-tracker@9.0.1': {} - '@mui/icons-material@9.0.0(@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': + '@mui/icons-material@9.0.1(@mui/material@9.0.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@types/react@19.2.14)(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 - '@mui/material': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - react: 19.2.5 + '@mui/material': 9.0.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: 19.2.6 optionalDependencies: '@types/react': 19.2.14 - '@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@mui/material@9.0.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 - '@mui/core-downloads-tracker': 9.0.0 - '@mui/system': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) + '@mui/core-downloads-tracker': 9.0.1 + '@mui/system': 9.0.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) '@mui/types': 9.0.0(@types/react@19.2.14) - '@mui/utils': 9.0.0(@types/react@19.2.14)(react@19.2.5) + '@mui/utils': 9.0.1(@types/react@19.2.14)(react@19.2.6) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.12(@types/react@19.2.14) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - react-is: 19.2.5 - react-transition-group: 4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-is: 19.2.6 + react-transition-group: 4.4.5(react-dom@19.2.6(react@19.2.6))(react@19.2.6) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) '@types/react': 19.2.14 - '@mui/private-theming@9.0.0(@types/react@19.2.14)(react@19.2.5)': + '@mui/private-theming@9.0.1(@types/react@19.2.14)(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 - '@mui/utils': 9.0.0(@types/react@19.2.14)(react@19.2.5) + '@mui/utils': 9.0.1(@types/react@19.2.14)(react@19.2.6) prop-types: 15.8.1 - react: 19.2.5 + react: 19.2.6 optionalDependencies: '@types/react': 19.2.14 - '@mui/styled-engine@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5)': + '@mui/styled-engine@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 '@emotion/cache': 11.14.0 @@ -3840,25 +3843,25 @@ snapshots: '@emotion/sheet': 1.4.0 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.5 + react: 19.2.6 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) - '@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': + '@mui/system@9.0.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 - '@mui/private-theming': 9.0.0(@types/react@19.2.14)(react@19.2.5) - '@mui/styled-engine': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5) + '@mui/private-theming': 9.0.1(@types/react@19.2.14)(react@19.2.6) + '@mui/styled-engine': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) '@mui/types': 9.0.0(@types/react@19.2.14) - '@mui/utils': 9.0.0(@types/react@19.2.14)(react@19.2.5) + '@mui/utils': 9.0.1(@types/react@19.2.14)(react@19.2.6) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.5 + react: 19.2.6 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) '@types/react': 19.2.14 '@mui/types@9.0.0(@types/react@19.2.14)': @@ -3867,15 +3870,15 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@mui/utils@9.0.0(@types/react@19.2.14)(react@19.2.5)': + '@mui/utils@9.0.1(@types/react@19.2.14)(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 '@mui/types': 9.0.0(@types/react@19.2.14) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.2.5 - react-is: 19.2.5 + react: 19.2.6 + react-is: 19.2.6 optionalDependencies: '@types/react': 19.2.14 @@ -3900,7 +3903,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.127.0': {} + '@oxc-project/types@0.128.0': {} '@paralleldrive/cuid2@2.3.1': dependencies: @@ -3912,19 +3915,19 @@ snapshots: dependencies: preact: 10.29.1 - '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2))': + '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) + '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) - vite-prerender-plugin: 0.5.13(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)) + vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) + vite-prerender-plugin: 0.5.13(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -3939,7 +3942,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2))': + '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3947,60 +3950,60 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.1 - vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) + vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) transitivePeerDependencies: - supports-color - '@rolldown/binding-android-arm64@1.0.0-rc.17': + '@rolldown/binding-android-arm64@1.0.0-rc.18': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + '@rolldown/binding-darwin-arm64@1.0.0-rc.18': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.17': + '@rolldown/binding-darwin-x64@1.0.0-rc.18': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + '@rolldown/binding-freebsd-x64@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.18': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.18': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.18': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18': optional: true - '@rolldown/pluginutils@1.0.0-rc.17': {} + '@rolldown/pluginutils@1.0.0-rc.18': {} '@rollup/pluginutils@4.2.1': dependencies: @@ -4009,7 +4012,7 @@ snapshots: '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-walker: 2.0.2 picomatch: 4.0.4 optionalDependencies: @@ -4092,14 +4095,14 @@ snapshots: '@sindresorhus/is@0.7.0': {} - '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) clsx: 1.1.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - react-virtualized-auto-sizer: 1.0.26(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - react-window: 1.8.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-virtualized-auto-sizer: 1.0.26(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react-window: 1.8.11(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3)': dependencies: @@ -4122,7 +4125,10 @@ snapshots: '@types/esrecurse@4.3.1': {} - '@types/estree@1.0.8': {} + '@types/estree@1.0.8': + optional: true + + '@types/estree@1.0.9': {} '@types/glob@7.2.0': dependencies: @@ -4417,8 +4423,8 @@ snapshots: browserslist@4.28.2: dependencies: baseline-browser-mapping: 2.10.27 - caniuse-lite: 1.0.30001791 - electron-to-chromium: 1.5.351 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.352 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4480,7 +4486,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001791: {} + caniuse-lite@1.0.30001792: {} caw@2.0.1: dependencies: @@ -4782,7 +4788,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.351: {} + electron-to-chromium@1.5.352: {} emoji-regex@10.6.0: {} @@ -4935,7 +4941,7 @@ snapshots: eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -4954,7 +4960,7 @@ snapshots: '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 ajv: 6.15.0 cross-spawn: 7.0.6 debug: 4.4.3 @@ -5987,55 +5993,55 @@ snapshots: rate-limiter-flexible@5.0.5: {} - react-dom@19.2.5(react@19.2.5): + react-dom@19.2.6(react@19.2.6): dependencies: - react: 19.2.5 + react: 19.2.6 scheduler: 0.27.0 - react-icons@5.6.0(react@19.2.5): + react-icons@5.6.0(react@19.2.6): dependencies: - react: 19.2.5 + react: 19.2.6 react-is@16.13.1: {} - react-is@19.2.5: {} + react-is@19.2.6: {} - react-router@7.15.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-router@7.15.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: cookie: 1.1.1 - react: 19.2.5 + react: 19.2.6 set-cookie-parser: 2.7.2 optionalDependencies: - react-dom: 19.2.5(react@19.2.5) + react-dom: 19.2.6(react@19.2.6) - react-toastify@11.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-toastify@11.1.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: clsx: 2.1.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) - react-transition-group@4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-transition-group@4.4.5(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: '@babel/runtime': 7.29.2 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) - react-virtualized-auto-sizer@1.0.26(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-virtualized-auto-sizer@1.0.26(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) - react-window@1.8.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + react-window@1.8.11(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: '@babel/runtime': 7.29.2 memoize-one: 5.2.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) - react@19.2.5: {} + react@19.2.6: {} read-pkg-up@1.0.1: dependencies: @@ -6090,35 +6096,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.17: + rolldown@1.0.0-rc.18: dependencies: - '@oxc-project/types': 0.127.0 - '@rolldown/pluginutils': 1.0.0-rc.17 + '@oxc-project/types': 0.128.0 + '@rolldown/pluginutils': 1.0.0-rc.18 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.17 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 - '@rolldown/binding-darwin-x64': 1.0.0-rc.17 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 + '@rolldown/binding-android-arm64': 1.0.0-rc.18 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.18 + '@rolldown/binding-darwin-x64': 1.0.0-rc.18 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.18 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.18 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.18 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.18 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.18 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.18 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.18 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.18 - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.17)(rollup@4.59.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.59.0): dependencies: open: 11.0.0 picomatch: 4.0.4 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: - rolldown: 1.0.0-rc.17 + rolldown: 1.0.0-rc.18 rollup: 4.59.0 rollup@4.59.0: @@ -6362,7 +6368,7 @@ snapshots: temp-dir: 1.0.0 uuid: 3.4.0 - terser@5.46.2: + terser@5.47.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -6477,7 +6483,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)): + vite-plugin-imagemin@0.6.1(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6502,11 +6508,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) + vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)): + vite-prerender-plugin@0.5.13(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6514,30 +6520,30 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) + vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) - vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@6.0.3) - vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2) + vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) transitivePeerDependencies: - supports-color - typescript - vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.46.2): + vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.14 - rolldown: 1.0.0-rc.17 + rolldown: 1.0.0-rc.18 tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.6.0 esbuild: 0.27.4 fsevents: 2.3.3 - terser: 5.46.2 + terser: 5.47.0 which-typed-array@1.1.20: dependencies: diff --git a/src/ESP32React/MqttSettingsService.cpp b/src/ESP32React/MqttSettingsService.cpp index 26754c118..400dcf6fd 100644 --- a/src/ESP32React/MqttSettingsService.cpp +++ b/src/ESP32React/MqttSettingsService.cpp @@ -185,10 +185,14 @@ bool MqttSettingsService::configureMqtt() { #ifndef TASMOTA_SDK if (_state.enableTLS) { if (_state.rootCA == "insecure") { +#if defined(EMSESP_DEBUG) emsesp::EMSESP::logger().debug("Start insecure MQTT"); +#endif static_cast(_mqttClient)->setInsecure(); } else { +#if defined(EMSESP_DEBUG) emsesp::EMSESP::logger().debug("Start secure MQTT with rootCA"); +#endif String certificate = "-----BEGIN CERTIFICATE-----\n" + _state.rootCA + "\n-----END CERTIFICATE-----\n"; static_cast(_mqttClient)->setCACert(certificate.c_str()); } diff --git a/src/core/system.cpp b/src/core/system.cpp index b29e3f4c1..3a04d1028 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -526,6 +526,29 @@ void System::syslog_init() { #endif } +// start or reconfigure modbus +void System::modbus_init() { + EMSESP::webSettingsService.read([&](WebSettings & settings) { + if (settings.modbus_enabled) { + if (EMSESP::modbus_ == nullptr) { + EMSESP::modbus_ = new Modbus; + EMSESP::modbus_->start(1, settings.modbus_port, settings.modbus_max_clients, settings.modbus_timeout * 1000); + } else if (settings.modbus_port != modbus_port_ || settings.modbus_max_clients != modbus_max_clients_ || settings.modbus_timeout != modbus_timeout_) { + EMSESP::modbus_->stop(); + EMSESP::modbus_->start(1, settings.modbus_port, settings.modbus_max_clients, settings.modbus_timeout * 1000); + } + } else if (EMSESP::modbus_ != nullptr) { + EMSESP::modbus_->stop(); + delete EMSESP::modbus_; + EMSESP::modbus_ = nullptr; + } + modbus_enabled_ = settings.modbus_enabled; + modbus_port_ = settings.modbus_port; + modbus_max_clients_ = settings.modbus_max_clients; + modbus_timeout_ = settings.modbus_timeout; + }); +} + // read specific major system settings to store locally for faster access void System::store_settings(WebSettings & settings) { version_ = settings.version; @@ -563,25 +586,6 @@ void System::store_settings(WebSettings & settings) { locale_ = settings.locale; developer_mode_ = settings.developer_mode; - - // start services - if (settings.modbus_enabled) { - if (EMSESP::modbus_ == nullptr) { - EMSESP::modbus_ = new Modbus; - EMSESP::modbus_->start(1, settings.modbus_port, settings.modbus_max_clients, settings.modbus_timeout * 1000); - } else if (settings.modbus_port != modbus_port_ || settings.modbus_max_clients != modbus_max_clients_ || settings.modbus_timeout != modbus_timeout_) { - EMSESP::modbus_->stop(); - EMSESP::modbus_->start(1, settings.modbus_port, settings.modbus_max_clients, settings.modbus_timeout * 1000); - } - } else if (EMSESP::modbus_ != nullptr) { - EMSESP::modbus_->stop(); - delete EMSESP::modbus_; - EMSESP::modbus_ = nullptr; - } - modbus_enabled_ = settings.modbus_enabled; - modbus_port_ = settings.modbus_port; - modbus_max_clients_ = settings.modbus_max_clients; - modbus_timeout_ = settings.modbus_timeout; } // Starts up core services @@ -631,6 +635,7 @@ void System::start() { network_init(); // network uart_init(); // start UART syslog_init(); // start syslog + modbus_init(); // start modbus } // button single click @@ -1713,7 +1718,7 @@ void System::exportSystemBackup(JsonObject output) { output["version"] = EMSESP_APP_VERSION; // add the version to the output #ifndef EMSESP_STANDALONE - // add date/time if NTP enabled and active + // add date/time if NTP enabled and active if ((esp_sntp_enabled()) && (EMSESP::system_.ntp_connected())) { time_t now = time(nullptr); if (now > 1500000000L) { @@ -3266,7 +3271,7 @@ void System::set_valid_system_gpios() { valid_system_gpios_ = string_range_to_vector("0-21", "2, 8, 12-17, 18-19"); #elif CONFIG_IDF_TARGET_ESP32S2 - // https://docs.espressif.com/projects/esp-idf/en/stable/esp32s2/api-reference/peripherals/gpio.html + // https://docs.espressif.com/projects/esp-idf/en/stable/esp32s2/api-reference/peripherals/gpio.html // excluded: // GPIO26 - GPIO32 = SPI flash and PSRAM // GPIO45 - GPIO46 = strapping pins @@ -3279,7 +3284,7 @@ void System::set_valid_system_gpios() { valid_system_gpios_ = string_range_to_vector("0-46", "19, 20, 26-32, 45-46, 39-42, 22-25"); #elif CONFIG_IDF_TARGET_ESP32S3 - // https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/peripherals/gpio.html + // https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/peripherals/gpio.html // excluded: // GPIO3, GPIO45 - GPIO46 = strapping pins // GPIO26 - GPIO32 = SPI flash and PSRAM and not recommended @@ -3298,7 +3303,7 @@ void System::set_valid_system_gpios() { } #elif CONFIG_IDF_TARGET_ESP32 - // https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/gpio.html + // https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/gpio.html // excluded: // GPIO6 - GPIO11, GPIO16 - GPIO17 = used for SPI flash and PSRAM (dio mode only GPIO06-GPIO08, GPIO11) // GPIO20, GPIO24, GPIO28 - GPIO31 = don't exist @@ -3378,6 +3383,24 @@ void System::remove_gpio(uint8_t pin, bool also_system) { } } +// remove a gpio that has 0 for disable +void System::remove_optional_gpio(uint8_t pin) { + if (pin) { + remove_gpio(pin, false); + } +} + +// set unused gpios to default state input high-Z +void System::reset_unused_gpios() { + for (const auto & pin : valid_system_gpios_) { + auto it = std::find_if(used_gpios_.begin(), used_gpios_.end(), [pin](const GpioUsage & usage) { return usage.pin == pin; }); + if (it == used_gpios_.end()) { + LOG_DEBUG("reset pin %d", pin); + pinMode(pin, INPUT); + } + } +} + // return a list of GPIO's available for use std::vector System::available_gpios() { std::vector gpios; diff --git a/src/core/system.h b/src/core/system.h index b3ee3c242..0a3b03f6a 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -122,6 +122,7 @@ class System { void show_mem(const char * note); void store_settings(class WebSettings & settings); void syslog_init(); + void modbus_init(); bool check_upgrade(); bool check_restore(); void heartbeat_json(JsonObject output); @@ -376,6 +377,8 @@ class System { #endif static void remove_gpio(uint8_t pin, bool also_system = false); // remove a gpio from both valid (optional) and used lists + static void remove_optional_gpio(uint8_t pin); + static void reset_unused_gpios(); // Partition info map: partition name -> {version, size, install_date} std::map, AllocatorPSRAM>> partition_info_; diff --git a/src/emsesp_version.h b/src/emsesp_version.h index e7b3ea13f..2f719f021 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.20" +#define EMSESP_APP_VERSION "3.8.2-dev.21" diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index faf9f54eb..94c9bb024 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -166,7 +166,9 @@ StateUpdateResult WebCustomEntity::update(JsonObject root, WebCustomEntity & web bool WebCustomEntityService::command_setvalue(const char * value, const int8_t id, const char * name) { // don't write if there is no value, to prevent setting an empty value by mistake when parsing attributes if (!strlen(value)) { +#if defined(EMSESP_DEBUG) EMSESP::logger().debug("can't set empty value!"); +#endif return false; } diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index 3551dbc0d..e9a8f5351 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -465,7 +465,9 @@ void WebSchedulerService::condition() { } else if (match.length() == 1 && match[0] == '0' && scheduleItem.retry_cnt == 1) { scheduleItem.retry_cnt = 0xFF; } else if (match.length() != 1) { // the match is not boolean +#if defined(EMSESP_DEBUG) EMSESP::logger().debug("condition result: %s", match.c_str()); +#endif } } } diff --git a/src/web/WebSettingsService.cpp b/src/web/WebSettingsService.cpp index c0b0b8d04..dead86c43 100644 --- a/src/web/WebSettingsService.cpp +++ b/src/web/WebSettingsService.cpp @@ -20,7 +20,7 @@ namespace emsesp { -uint8_t WebSettings::flags_ = 0; +uint16_t WebSettings::flags_ = 0; WebSettingsService::WebSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager) : _httpEndpoint(WebSettings::read, WebSettings::update, this, server, EMSESP_SETTINGS_SERVICE_PATH, securityManager) @@ -114,11 +114,11 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) { reset_flags(); // before loading new board profile free old gpios from used list to allow remapping - EMSESP::system_.remove_gpio(original_settings.led_gpio); - EMSESP::system_.remove_gpio(original_settings.dallas_gpio); + EMSESP::system_.remove_optional_gpio(original_settings.led_gpio); + EMSESP::system_.remove_optional_gpio(original_settings.dallas_gpio); EMSESP::system_.remove_gpio(original_settings.pbutton_gpio); - EMSESP::system_.remove_gpio(original_settings.rx_gpio); - EMSESP::system_.remove_gpio(original_settings.tx_gpio); + EMSESP::system_.remove_optional_gpio(original_settings.rx_gpio); + EMSESP::system_.remove_optional_gpio(original_settings.tx_gpio); // see if the user has changed the board profile // this will set: led_gpio, dallas_gpio, rx_gpio, tx_gpio, pbutton_gpio, phy_type, eth_power, eth_phy_addr, eth_clock_mode, led_type @@ -243,13 +243,13 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) { // Modbus settings settings.modbus_enabled = root["modbus_enabled"] | EMSESP_DEFAULT_MODBUS_ENABLED; - check_flag(original_settings.modbus_enabled, settings.modbus_enabled, ChangeFlags::RESTART); + check_flag(original_settings.modbus_enabled, settings.modbus_enabled, ChangeFlags::MODBUS); settings.modbus_port = root["modbus_port"] | EMSESP_DEFAULT_MODBUS_PORT; - check_flag(original_settings.modbus_port, settings.modbus_port, ChangeFlags::RESTART); + check_flag(original_settings.modbus_port, settings.modbus_port, ChangeFlags::MODBUS); settings.modbus_max_clients = root["modbus_max_clients"] | EMSESP_DEFAULT_MODBUS_MAX_CLIENTS; - check_flag(original_settings.modbus_max_clients, settings.modbus_max_clients, ChangeFlags::RESTART); + check_flag(original_settings.modbus_max_clients, settings.modbus_max_clients, ChangeFlags::MODBUS); settings.modbus_timeout = root["modbus_timeout"] | EMSESP_DEFAULT_MODBUS_TIMEOUT; - check_flag(original_settings.modbus_timeout, settings.modbus_timeout, ChangeFlags::RESTART); + check_flag(original_settings.modbus_timeout, settings.modbus_timeout, ChangeFlags::MODBUS); // // these may need mqtt restart to rebuild HA discovery topics @@ -372,7 +372,11 @@ void WebSettingsService::onUpdate() { Mqtt::reset_mqtt(); // reload MQTT, init HA etc } + if (WebSettings::has_flags(WebSettings::ChangeFlags::MODBUS)) { + EMSESP::system_.modbus_init(); + } WebSettings::reset_flags(); + EMSESP::system_.reset_unused_gpios(); } void WebSettingsService::begin() { @@ -523,7 +527,7 @@ void WebSettings::set_board_profile(WebSettings & settings) { } // returns true if the value was changed -bool WebSettings::check_flag(int prev_v, int new_v, uint8_t flag) { +bool WebSettings::check_flag(int prev_v, int new_v, uint16_t flag) { if (prev_v != new_v) { add_flags(flag); #if defined(EMSESP_DEBUG) @@ -534,11 +538,11 @@ bool WebSettings::check_flag(int prev_v, int new_v, uint8_t flag) { return false; } -void WebSettings::add_flags(uint8_t flags) { +void WebSettings::add_flags(uint16_t flags) { flags_ |= flags; } -bool WebSettings::has_flags(uint8_t flags) { +bool WebSettings::has_flags(uint16_t flags) { return (flags_ & flags) == flags; } @@ -546,7 +550,7 @@ void WebSettings::reset_flags() { flags_ = ChangeFlags::NONE; } -uint8_t WebSettings::get_flags() { +uint16_t WebSettings::get_flags() { return flags_; } diff --git a/src/web/WebSettingsService.h b/src/web/WebSettingsService.h index 8ad076ab4..f778c7203 100644 --- a/src/web/WebSettingsService.h +++ b/src/web/WebSettingsService.h @@ -88,7 +88,7 @@ class WebSettings { static void read(WebSettings & settings, JsonObject root); static StateUpdateResult update(JsonObject root, WebSettings & settings); - enum ChangeFlags : uint8_t { + enum ChangeFlags : uint16_t { NONE = 0, UART = (1 << 0), // 1 - uart SYSLOG = (1 << 1), // 2 - syslog @@ -98,19 +98,20 @@ class WebSettings { LED = (1 << 5), // 32 - led BUTTON = (1 << 6), // 64 - button MQTT = (1 << 7), // 128 - mqtt - RESTART = 0xFF // 255 - restart request (all changes) + MODBUS = (1 << 8), // 256 - modbus + RESTART = 0xFFFF // restart request (all changes) }; - static bool check_flag(int prev_v, int new_v, uint8_t flag); - static void add_flags(uint8_t flags); - static bool has_flags(uint8_t flags); - static void reset_flags(); - static uint8_t get_flags(); + static bool check_flag(int prev_v, int new_v, uint16_t flag); + static void add_flags(uint16_t flags); + static bool has_flags(uint16_t flags); + static void reset_flags(); + static uint16_t get_flags(); private: static void set_board_profile(WebSettings & settings); - static uint8_t flags_; + static uint16_t flags_; }; class WebSettingsService : public StatefulService { From fed15f0f96427d25f6270ba5a547edf4f1fb728c Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 7 May 2026 18:44:02 +0200 Subject: [PATCH 156/162] tx-mode: auto, default bus-id 0x49 --- CHANGELOG_LATEST.md | 2 ++ interface/src/app/settings/ApplicationSettings.tsx | 1 + lib_standalone/emsuart_standalone.h | 3 ++- src/core/default_settings.h | 4 ++-- src/core/telegram.cpp | 5 ++++- src/core/telegram.h | 9 +++++++++ src/emsesp_version.h | 2 +- src/uart/emsuart_esp32.cpp | 6 ++++-- src/uart/emsuart_esp32.h | 3 ++- 9 files changed, 27 insertions(+), 8 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 9c67e875d..00772509b 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -14,6 +14,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - heatpump reset [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933) - 2.nd freshwater module (dhw4, dhw5) [#2991](https://github.com/emsesp/EMS-ESP32/issues/2991) - full system backup and restore +- auto-logic to set ht3/ems+ tx-mode ## Fixed @@ -36,3 +37,4 @@ For more details go to [emsesp.org](https://emsesp.org/). - move http client from stack to heap - heap optimizations [#3021](https://github.com/emsesp/EMS-ESP32/discussions/3021) - check and read 0x470 as summer2_typeids[0] only if received [#2686](https://github.com/emsesp/EMS-ESP32/issues/2686), [#3055](https://github.com/emsesp/EMS-ESP32/issues/3055) +- default bus-id: gateway1(0x49), tx-mode: auto diff --git a/interface/src/app/settings/ApplicationSettings.tsx b/interface/src/app/settings/ApplicationSettings.tsx index ce985530b..8e8e90ab7 100644 --- a/interface/src/app/settings/ApplicationSettings.tsx +++ b/interface/src/app/settings/ApplicationSettings.tsx @@ -677,6 +677,7 @@ const ApplicationSettings = () => { EMS+ HT3 {LL.HARDWARE()} + Auto diff --git a/lib_standalone/emsuart_standalone.h b/lib_standalone/emsuart_standalone.h index 4a76581db..2d576ae6b 100644 --- a/lib_standalone/emsuart_standalone.h +++ b/lib_standalone/emsuart_standalone.h @@ -22,10 +22,11 @@ #include "Arduino.h" #define EMS_TXMODE_OFF 0 -#define EMS_TXMODE_DEFAULT 1 +#define EMS_TXMODE_EMS 1 #define EMS_TXMODE_EMSPLUS 2 #define EMS_TXMODE_HT3 3 #define EMS_TXMODE_HW 4 +#define EMS_TXMODE_AUTO 5 namespace emsesp { diff --git a/src/core/default_settings.h b/src/core/default_settings.h index 0f5b72f9a..aafd35c21 100644 --- a/src/core/default_settings.h +++ b/src/core/default_settings.h @@ -26,11 +26,11 @@ #endif #ifndef EMSESP_DEFAULT_TX_MODE -#define EMSESP_DEFAULT_TX_MODE 1 // EMS1.0 +#define EMSESP_DEFAULT_TX_MODE 5 // Auto #endif #ifndef EMSESP_DEFAULT_EMS_BUS_ID -#define EMSESP_DEFAULT_EMS_BUS_ID 0x0B // service key +#define EMSESP_DEFAULT_EMS_BUS_ID 0x49 // gateway 1 #endif #ifndef EMSESP_DEFAULT_SYSLOG_ENABLED diff --git a/src/core/telegram.cpp b/src/core/telegram.cpp index 67d4bc4ad..9317882c9 100644 --- a/src/core/telegram.cpp +++ b/src/core/telegram.cpp @@ -43,6 +43,7 @@ uint8_t EMSbus::ems_mask_ = EMS_MASK_UNSET; // unset so its triggered uint8_t EMSbus::ems_bus_id_ = EMSESP_DEFAULT_EMS_BUS_ID; uint8_t EMSbus::tx_mode_ = EMSESP_DEFAULT_TX_MODE; uint8_t EMSbus::tx_state_ = Telegram::Operation::NONE; +bool EMSbus::isEMS2_ = false; uuid::log::Logger EMSbus::logger_{F_(telegram), uuid::log::Facility::CONSOLE}; @@ -206,7 +207,9 @@ void RxService::add(uint8_t * data, uint8_t length) { message_data = data + 6; message_length = length - 7; } - + if (type_id > 0x0FF && message_length > 1) { // used for auto tx_mode + set_ems2(); + } // if we're watching and "raw" print out actual telegram as bytes to the console // including the CRC at the end if (EMSESP::watch() == EMSESP::Watch::WATCH_RAW) { diff --git a/src/core/telegram.h b/src/core/telegram.h index afebb5e23..d12cb76ab 100644 --- a/src/core/telegram.h +++ b/src/core/telegram.h @@ -168,6 +168,14 @@ class EMSbus { return (ems_mask_ == EMS_MASK_HT3); } + static bool is_ems2() { + return isEMS2_; + } + + static void set_ems2() { + isEMS2_ = true;; + } + static uint8_t ems_mask() { return ems_mask_; } @@ -242,6 +250,7 @@ class EMSbus { static uint8_t ems_bus_id_; // the bus id, which configurable and stored in settings static uint8_t tx_mode_; // local copy of the tx mode static uint8_t tx_state_; // state of the Tx line (NONE or waiting on a TX_READ or TX_WRITE) + static bool isEMS2_; }; class RxService : public EMSbus { diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 2f719f021..cd5b26d88 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.21" +#define EMSESP_APP_VERSION "3.8.2-dev.22" diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 344e991f2..73da13640 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -149,8 +149,10 @@ uint8_t EMSuart::transmit(const uint8_t * buf, const uint8_t len) { return EMS_TX_STATUS_OK; } + auto tx_mode = tx_mode_ != EMS_TXMODE_AUTO ? tx_mode_ : EMSbus::is_ht3() ? EMS_TXMODE_HT3 : EMSbus::is_ems2() ? EMS_TXMODE_EMSPLUS : EMS_TXMODE_EMS; + // TXMODE is EMS+ with long delay - if (tx_mode_ == EMS_TXMODE_EMSPLUS) { + if (tx_mode == EMS_TXMODE_EMSPLUS) { for (uint8_t i = 0; i < len; i++) { uart_write_bytes(EMSUART_NUM, &buf[i], 1); delayMicroseconds(EMSUART_TX_WAIT_PLUS); @@ -160,7 +162,7 @@ uint8_t EMSuart::transmit(const uint8_t * buf, const uint8_t len) { } // TXMODE is HT3 with 7 bittimes delay - if (tx_mode_ == EMS_TXMODE_HT3) { + if (tx_mode == EMS_TXMODE_HT3) { for (uint8_t i = 0; i < len; i++) { uart_write_bytes(EMSUART_NUM, &buf[i], 1); delayMicroseconds(EMSUART_TX_WAIT_HT3); diff --git a/src/uart/emsuart_esp32.h b/src/uart/emsuart_esp32.h index fbf011943..70498f080 100644 --- a/src/uart/emsuart_esp32.h +++ b/src/uart/emsuart_esp32.h @@ -42,10 +42,11 @@ #define EMS_TXMODE_INIT 0xFF #define EMS_TXMODE_OFF 0 -#define EMS_TXMODE_DEFAULT 1 +#define EMS_TXMODE_EMS 1 #define EMS_TXMODE_EMSPLUS 2 #define EMS_TXMODE_HT3 3 #define EMS_TXMODE_HW 4 +#define EMS_TXMODE_AUTO 5 // LEGACY #define EMSUART_TX_BIT_TIME 104 // bit time @9600 baud From 7b61429a026fb38a54a5db702cca7df2628bd20c Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 9 May 2026 07:52:35 +0200 Subject: [PATCH 157/162] fix testdata to device-id 0x49, txMode 5 --- src/core/default_settings.h | 2 +- src/core/emsdevice.h | 8 +++++ src/test/test.cpp | 64 ++++++++++++++++++------------------- test/test_api/test_api.cpp | 8 ++--- test/test_api/test_api.h | 8 ++--- 5 files changed, 49 insertions(+), 41 deletions(-) diff --git a/src/core/default_settings.h b/src/core/default_settings.h index aafd35c21..29aee666f 100644 --- a/src/core/default_settings.h +++ b/src/core/default_settings.h @@ -30,7 +30,7 @@ #endif #ifndef EMSESP_DEFAULT_EMS_BUS_ID -#define EMSESP_DEFAULT_EMS_BUS_ID 0x49 // gateway 1 +#define EMSESP_DEFAULT_EMS_BUS_ID 0x49 // gateway 2 #endif #ifndef EMSESP_DEFAULT_SYSLOG_ENABLED diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index 01c870a1d..793313f3d 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -448,6 +448,14 @@ class EMSdevice { static constexpr uint8_t EMS_DEVICE_ID_DHW2 = 0x29; // MM100 module as water station static constexpr uint8_t EMS_DEVICE_ID_DHW8 = 0x2F; // last DHW module id? static constexpr uint8_t EMS_DEVICE_ID_IPM_DHW = 0x41; // IPM module as water station + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY1 = 0x48; // KM200, MX300, MX400 + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY2 = 0x49; + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY3 = 0x4A; + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY4 = 0x4B; + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY5 = 0x4C; + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY6 = 0x4D; + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY7 = 0x4E; + static constexpr uint8_t EMS_DEVICE_ID_GATEWAY8 = 0x4F; // generic type IDs static constexpr uint16_t EMS_TYPE_NAME = 0x01; // device config for ems devices, name ascii on offset 27ff for ems+ diff --git a/src/test/test.cpp b/src/test/test.cpp index 4a7181893..9aa7441af 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -68,7 +68,7 @@ bool Test::test(const std::string & cmd, int8_t id1, int8_t id2) { uart_telegram({0x08, 0x98, 0x33, 0x00, 0x23, 0x24}); // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); // Thermostat RCPLUSStatusMessage_HC1(0x01A5) uart_telegram({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, @@ -89,7 +89,7 @@ bool Test::test(const std::string & cmd, int8_t id1, int8_t id2) { add_device(0x08, 219); // Greenstar HIU/Logamax kompakt WS170 - // [emsesp] boiler(0x08) -W-> Me(0x0B), UBAMonitorFastPlus(0xE4), data: 00 01 35 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 80 00 (offset 6) + // [emsesp] boiler(0x08) -W-> Me(0x49), UBAMonitorFastPlus(0xE4), data: 00 01 35 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 80 00 (offset 6) uart_telegram({0x08, 0x00, 0xE4, 0x00, // 00, 01, 0x35, 00, 00, 00, 00, 00, 00, 00, 00, 0x80, 00, 00, 00, 00, 00, 00, 00, 0x80, 00}); @@ -112,7 +112,7 @@ bool Test::test(const std::string & cmd, int8_t id1, int8_t id2) { uart_telegram({0x08, 0x90, 0x33, 0x00, 0x23, 0x24}); // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); // Thermostat 0x2A5 for HC1 uart_telegram({0x10, 00, 0xFF, 00, 01, 0xA5, 0x80, 00, 01, 0x30, 0x28, 00, 0x30, 0x28, 01, 0x54, @@ -144,7 +144,7 @@ bool Test::test(const std::string & cmd, int8_t id1, int8_t id2) { uart_telegram({0x08, 0x90, 0x33, 0x00, 0x23, 0x24}); // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); // Thermostat 0x2A5 for HC1 uart_telegram({0x10, 00, 0xFF, 00, 01, 0xA5, 0x80, 00, 01, 0x30, 0x28, 00, 0x30, 0x28, 01, 0x54, @@ -160,7 +160,7 @@ bool Test::test(const std::string & cmd, int8_t id1, int8_t id2) { EMSESP::logger().notice("Adding a Gateway..."); // add 0x48 KM200, via a version command - rx_telegram({0x48, 0x0B, 0x02, 0x00, 0xBD, 0x04, 0x06, 00, 00, 00, 00, 00, 00, 00}); + rx_telegram({0x48, 0x49, 0x02, 0x00, 0xBD, 0x04, 0x06, 00, 00, 00, 00, 00, 00, 00}); // Boiler(0x08) -> All(0x00), UBADevices(0x07), data: 09 01 00 00 00 00 00 00 01 00 00 00 00 // check: make sure 0x48 is not detected again ! @@ -203,14 +203,14 @@ bool Test::test(const std::string & cmd, int8_t id1, int8_t id2) { add_device(0x08, 123); // Nefit Trendline // UBAuptime - uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); + uart_telegram({0x08, 0x49, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, 0x80, 0x00, 0x01, 0xE1, 0x01, 0x76, 0x0E, 0x3D, 0x48, 0x00, 0xC9, 0x44, 0x02, 0x00}); // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); return true; } @@ -234,10 +234,10 @@ bool Test::test(const std::string & cmd, int8_t id1, int8_t id2) { add_device(0x30, 163); // SM100 // SM100Monitor - type 0x0362 EMS+ - for SM100 and SM200 - uart_telegram({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, + uart_telegram({0xB0, 0x49, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 00, 0x7C, 0x80, 00, 0x80, 00, 0x80, 00, 0x80}); - uart_telegram({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, + uart_telegram({0xB0, 0x49, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 0x33}); uart_telegram({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); @@ -580,7 +580,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const add_device(0x09, 206); // Nefit Excellent HR30 Controller // UBAuptime - uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); + uart_telegram({0x08, 0x49, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); ok = true; } @@ -588,10 +588,10 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const EMSESP::logger().notice("Testing 620..."); // Version Controller - uart_telegram({0x09, 0x0B, 0x02, 0x00, 0x5F, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + uart_telegram({0x09, 0x49, 0x02, 0x00, 0x5F, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); // Version Boiler - uart_telegram({0x08, 0x0B, 0x02, 0x00, 0x5F, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + uart_telegram({0x08, 0x49, 0x02, 0x00, 0x5F, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); ok = true; } @@ -607,7 +607,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const // simulate getting version information back from an unknown device // note there is no brand (byte 9) - rx_telegram({0x09, 0x0B, 0x02, 0x00, 0x59, 0x09, 0x0a}); + rx_telegram({0x09, 0x49, 0x02, 0x00, 0x59, 0x09, 0x0a}); shell.invoke_command("show devices"); shell.invoke_command("call system report"); @@ -618,7 +618,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const shell.printfln("Testing unknown2..."); // simulate getting version information back from an unknown device - rx_telegram({0x09, 0x0B, 0x02, 0x00, 0x5A, 0x01, 0x02}); // productID is 90 which doesn't exist + rx_telegram({0x09, 0x49, 0x02, 0x00, 0x5A, 0x01, 0x02}); // productID is 90 which doesn't exist ok = true; } @@ -815,9 +815,9 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const // test("thermostat"); // 0xC2 - // [emsesp] Boiler(0x08) -> Me(0x0B), UBAErrorMessage3(0xC2), data: 08 AC 00 10 31 48 30 31 15 80 95 0B 0E 10 38 00 7F FF FF FF 08 AC 00 10 09 41 30 + // [emsesp] Boiler(0x08) -> Me(0x49), UBAErrorMessage3(0xC2), data: 08 AC 00 10 31 48 30 31 15 80 95 0B 0E 10 38 00 7F FF FF FF 08 AC 00 10 09 41 30 uart_telegram( - {0x08, 0x0B, 0xC2, 0, 0x08, 0xAC, 00, 0x10, 0x31, 0x48, 0x30, 0x31, 0x15, 0x80, 0x95, 0x0B, 0x0E, 0x10, 0x38, 00, 0x7F, 0xFF, 0xFF, 0xFF}); + {0x08, 0x49, 0xC2, 0, 0x08, 0xAC, 00, 0x10, 0x31, 0x48, 0x30, 0x31, 0x15, 0x80, 0x95, 0x0B, 0x0E, 0x10, 0x38, 00, 0x7F, 0xFF, 0xFF, 0xFF}); // shell.invoke_command("show values"); @@ -1042,7 +1042,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const // Boiler -> Me, UBAParameterWW(0x33) // wwseltemp = goes from 52 degrees (0x34) to void (0xFF) // it should delete the HA config topic homeassistant/sensor/ems-esp/boiler_wwseltemp/config - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0xFF, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0xFF, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); shell.invoke_command("call boiler wwseltemp"); shell.invoke_command("call system publish"); @@ -1795,7 +1795,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const add_device(0x18, 202); // Bosch TC100 - https://github.com/emsesp/EMS-ESP/issues/474 // 0x0A - uart_telegram({0x98, 0x0B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + uart_telegram({0x98, 0x49, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); ok = true; } @@ -1829,10 +1829,10 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const // SM100Monitor - type 0x0362 EMS+ - for SM100 and SM200 // B0 0B FF 00 02 62 00 44 02 7A 80 00 80 00 80 00 80 00 80 00 80 00 00 7C 80 00 80 00 80 00 80 - rx_telegram({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, + rx_telegram({0xB0, 0x49, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 00, 0x7C, 0x80, 00, 0x80, 00, 0x80, 00, 0x80}); - rx_telegram({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, + rx_telegram({0xB0, 0x49, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 0x33}); rx_telegram({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); @@ -1936,7 +1936,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const if (command == "rx2") { shell.printfln("Testing Rx2..."); for (uint8_t i = 0; i < 30; i++) { - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); ok = true; } } @@ -1953,23 +1953,23 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const uart_telegram({0x08, 0x97, 0x33, 0x00, 0x23, 0x24}); // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); // Thermostat -> Me, RC20StatusMessage(0x91), telegram: 17 0B 91 05 44 45 46 47 (#data=4) - uart_telegram({0x17, 0x0B, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47}); + uart_telegram({0x17, 0x49, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47}); // bad CRC - corrupt telegram - CRC should be 0x8E - uint8_t t5[] = {0x17, 0x0B, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47, 0x99}; + uint8_t t5[] = {0x17, 0x49, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47, 0x99}; EMSESP::rxservice_.add(t5, sizeof(t5)); // simulating a Tx record - uart_telegram({0x0B, 0x88, 0x07, 0x00, 0x20}); + uart_telegram({0x49, 0x88, 0x07, 0x00, 0x20}); // Version Boiler - uart_telegram({0x08, 0x0B, 0x02, 0x00, 0x7B, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04}); + uart_telegram({0x08, 0x49, 0x02, 0x00, 0x7B, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04}); // Version Thermostat, device_id 0x11 - uart_telegram({0x11, 0x0B, 0x02, 0x00, 0x4D, 0x03, 0x03}); + uart_telegram({0x11, 0x49, 0x02, 0x00, 0x4D, 0x03, 0x03}); // Thermostat -> all, telegram: 10 00 FF 00 01 A5 00 D7 21 00 00 00 00 30 01 84 01 01 03 01 84 01 F1 00 00 11 01 00 08 63 00 // 0x1A5 test ems+ @@ -1987,7 +1987,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const uart_telegram({0x17, 0x08, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00}); // Thermostat -> Me, RC20Set(0xA8), telegram: 17 0B A8 00 01 00 FF F6 01 06 00 01 0D 01 00 FF FF 01 02 02 02 00 00 05 1F 05 1F 02 0E 00 FF (#data=27) - uart_telegram({0x17, 0x0B, 0xA8, 0x00, 0x01, 0x00, 0xFF, 0xF6, 0x01, 0x06, 0x00, 0x01, 0x0D, 0x01, 0x00, 0xFF, + uart_telegram({0x17, 0x49, 0xA8, 0x00, 0x01, 0x00, 0xFF, 0xF6, 0x01, 0x06, 0x00, 0x01, 0x0D, 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x05, 0x1F, 0x05, 0x1F, 0x02, 0x0E, 0x00, 0xFF}); // Boiler(0x08) -> All(0x00), UBAMonitorWW(0x34), data: 36 01 A5 80 00 21 00 00 01 00 01 3E 8D 03 77 91 00 80 00 @@ -2021,7 +2021,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const EMSESP::send_write_request(0x91, 0x17, 0x00, t18, sizeof(t18), 0x00); // TX - send EMS+ - const uint8_t t13[] = {0x90, 0x0B, 0xFF, 00, 01, 0xBA, 00, 0x2E, 0x2A, 0x26, 0x1E, 0x03, + const uint8_t t13[] = {0x90, 0x49, 0xFF, 00, 01, 0xBA, 00, 0x2E, 0x2A, 0x26, 0x1E, 0x03, 00, 0xFF, 0xFF, 05, 0x2A, 01, 0xE1, 0x20, 0x01, 0x0F, 05, 0x2A}; EMSESP::txservice_.add(Telegram::Operation::TX_RAW, t13, sizeof(t13), 0); @@ -2145,7 +2145,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const uart_telegram({0x08, 0x98, 0x33, 0x00, 0x23, 0x24}); // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); // add a thermostat add_device(0x18, 157); // Bosch CR100 @@ -2487,7 +2487,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const if (command == "rx3") { shell.printfln("Testing rx3..."); - uart_telegram({0x21, 0x0B, 0xFF, 0x00}); + uart_telegram({0x21, 0x49, 0xFF, 0x00}); ok = true; } @@ -2495,7 +2495,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const if (command == "tx2") { shell.printfln("Testing tx2..."); - uint8_t t[] = {0x0B, 0x88, 0x18, 0x00, 0x20, 0xD4}; // including CRC + uint8_t t[] = {0x49, 0x88, 0x18, 0x00, 0x20, 0xD4}; // including CRC EMSuart::transmit(t, sizeof(t)); ok = true; } diff --git a/test/test_api/test_api.cpp b/test/test_api/test_api.cpp index f32116ad3..880d27dca 100644 --- a/test/test_api/test_api.cpp +++ b/test/test_api/test_api.cpp @@ -132,7 +132,7 @@ void uart_telegram(const char * rx_data) { // add an EMS device and register it void add_device(uint8_t device_id, uint8_t product_id) { - uart_telegram({device_id, 0x0B, EMSdevice::EMS_TYPE_VERSION, 0, product_id, 1, 0}); + uart_telegram({device_id, 0x49, EMSdevice::EMS_TYPE_VERSION, 0, product_id, 1, 0}); } // add our EMS test devices @@ -143,14 +143,14 @@ void add_devices() { add_device(0x08, 123); // Nefit Trendline // UBAuptime - uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); + uart_telegram({0x08, 0x49, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, 0x80, 0x00, 0x01, 0xE1, 0x01, 0x76, 0x0E, 0x3D, 0x48, 0x00, 0xC9, 0x44, 0x02, 0x00}); - // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 49 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) + uart_telegram({0x08, 0x49, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); // // thermostat diff --git a/test/test_api/test_api.h b/test/test_api/test_api.h index e59282622..e4b5f2d56 100644 --- a/test/test_api/test_api.h +++ b/test/test_api/test_api.h @@ -228,7 +228,7 @@ void test_23() { "\"temperatureSensorReads\":0,\"temperatureSensorFails\":0},\"analog\":{\"enabled\":true,\"analogSensors\":5,\"analogSensorReads\":0," "\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\"," "\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,\"busReadsFailed\":0,\"busWritesFailed\":0," - "\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":\"en\",\"txMode\":1,\"emsBusID\":11," + "\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":\"en\",\"txMode\":5,\"emsBusID\":73," "\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,\"readonlyMode\":false,\"fahrenheit\":" "false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,\"telnetEnabled\":true," "\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":\"boiler\",\"name\":\"My " @@ -259,7 +259,7 @@ void test_24() { "\"temperatureSensorReads\":0,\"temperatureSensorFails\":0},\"analog\":{\"enabled\":true,\"analogSensors\":5,\"analogSensorReads\":0," "\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\"," "\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,\"busReadsFailed\":0,\"busWritesFailed\":0," - "\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":\"en\",\"txMode\":1,\"emsBusID\":11," + "\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":\"en\",\"txMode\":5,\"emsBusID\":73," "\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,\"readonlyMode\":false,\"fahrenheit\":" "false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,\"telnetEnabled\":true," "\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":\"boiler\",\"name\":\"My " @@ -330,8 +330,8 @@ void test_25() { "gauge\\nemsesp_bus_buswritesfailed 0\\n# HELP emsesp_bus_busrxlinequality busRxLineQuality\\n# TYPE emsesp_bus_busrxlinequality " "gauge\\nemsesp_bus_busrxlinequality 100\\n# HELP emsesp_bus_bustxlinequality busTxLineQuality\\n# TYPE emsesp_bus_bustxlinequality " "gauge\\nemsesp_bus_bustxlinequality 100\\n# HELP emsesp_bus_info info\\n# TYPE emsesp_bus_info gauge\\nemsesp_bus_info{busstatus=\\\"connected\\\", " - "busprotocol=\\\"Buderus\\\"} 1\\n# HELP emsesp_settings_txmode txMode\\n# TYPE emsesp_settings_txmode gauge\\nemsesp_settings_txmode 1\\n# HELP " - "emsesp_settings_emsbusid emsBusID\\n# TYPE emsesp_settings_emsbusid gauge\\nemsesp_settings_emsbusid 11\\n# HELP emsesp_settings_showertimer " + "busprotocol=\\\"Buderus\\\"} 1\\n# HELP emsesp_settings_txmode txMode\\n# TYPE emsesp_settings_txmode gauge\\nemsesp_settings_txmode 5\\n# HELP " + "emsesp_settings_emsbusid emsBusID\\n# TYPE emsesp_settings_emsbusid gauge\\nemsesp_settings_emsbusid 73\\n# HELP emsesp_settings_showertimer " "showerTimer\\n# TYPE emsesp_settings_showertimer gauge\\nemsesp_settings_showertimer 0\\n# HELP emsesp_settings_showerminduration " "showerMinDuration\\n# TYPE emsesp_settings_showerminduration gauge\\nemsesp_settings_showerminduration 180\\n# HELP emsesp_settings_showeralert " "showerAlert\\n# TYPE emsesp_settings_showeralert gauge\\nemsesp_settings_showeralert 0\\n# HELP emsesp_settings_hideled hideLed\\n# TYPE " From 37a94f8e0f8c577f5f19bec384cf6ff5c6316318 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 10 May 2026 13:21:28 +0200 Subject: [PATCH 158/162] auto-formatting --- src/devices/connect.cpp | 8 ++++---- src/uart/emsuart_esp32.cpp | 2 +- src/web/WebSchedulerService.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp index 068a91342..1b87a695e 100644 --- a/src/devices/connect.cpp +++ b/src/devices/connect.cpp @@ -39,11 +39,11 @@ Connect::Connect(uint8_t device_type, uint8_t device_id, uint8_t product_id, con DeviceValueUOM::DEGREES); // Roomthermostats for (uint8_t i = 0; i < 16; i++) { - register_telegram_type(0x0BDD + i, "Room", false, MAKE_PF_CB(process_roomThermostat)); // broadcasted - register_telegram_type(0x0B3D + i, "Roomname", false, MAKE_PF_CB(process_roomThermostatName), 100); // fetch for active circuits + register_telegram_type(0x0BDD + i, "Room", false, MAKE_PF_CB(process_roomThermostat)); // broadcasted + register_telegram_type(0x0B3D + i, "Roomname", false, MAKE_PF_CB(process_roomThermostatName), 100); // fetch for active circuits register_telegram_type(0x0BB5 + i, "Roomsettings", false, MAKE_PF_CB(process_roomThermostatSettings), 8); // fetch for active circuits - register_telegram_type(0x1230 + i, "Roomparams", false, MAKE_PF_CB(process_roomThermostatParam)); // fetch for active circuits - register_telegram_type(0x1244 + i, "Roomdata", false, MAKE_PF_CB(process_roomThermostatData)); // broadcasted + register_telegram_type(0x1230 + i, "Roomparams", false, MAKE_PF_CB(process_roomThermostatParam)); // fetch for active circuits + register_telegram_type(0x1244 + i, "Roomdata", false, MAKE_PF_CB(process_roomThermostatData)); // broadcasted } register_telegram_type(0xDB65, "Roomschedule", true, MAKE_PF_CB(process_roomSchedule)); // 0x2040, broadcast 36 bytes: diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 73da13640..8c22f8919 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -149,7 +149,7 @@ uint8_t EMSuart::transmit(const uint8_t * buf, const uint8_t len) { return EMS_TX_STATUS_OK; } - auto tx_mode = tx_mode_ != EMS_TXMODE_AUTO ? tx_mode_ : EMSbus::is_ht3() ? EMS_TXMODE_HT3 : EMSbus::is_ems2() ? EMS_TXMODE_EMSPLUS : EMS_TXMODE_EMS; + auto tx_mode = tx_mode_ != EMS_TXMODE_AUTO ? tx_mode_ : EMSbus::is_ht3() ? EMS_TXMODE_HT3 : EMSbus::is_ems2() ? EMS_TXMODE_EMSPLUS : EMS_TXMODE_EMS; // TXMODE is EMS+ with long delay if (tx_mode == EMS_TXMODE_EMSPLUS) { diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index e9a8f5351..3ab7900ee 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -352,8 +352,8 @@ bool WebSchedulerService::command(const char * name, const std::string & command // parse json JsonDocument doc; if (deserializeJson(doc, cmd) == DeserializationError::Ok) { - HTTPClient * http = new HTTPClient; - std::string url = doc["url"] | ""; + HTTPClient * http = new HTTPClient; + std::string url = doc["url"] | ""; // for a GET with parameters replace commands with values // don't search the complete url, it may contain a devicename in path auto q = url.find_first_of('?'); From b988c67c8ee1f71cfb0af81bfd28b3055292ebfa Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 10 May 2026 13:21:37 +0200 Subject: [PATCH 159/162] update example --- data/pre_load.json | 47 ++++++++++++++-------------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/data/pre_load.json b/data/pre_load.json index cd5fdd2c7..45e8742d3 100644 --- a/data/pre_load.json +++ b/data/pre_load.json @@ -1,7 +1,6 @@ { "type": "systembackup", "version": "3.8.2", - "date": "2026-03-29T13:28:15", "systembackup": [ { "type": "settings", @@ -19,7 +18,7 @@ "tx_power": 0 }, "AP": { - "provision_mode": 2, + "provision_mode": 1, "ssid": "ems-esp", "password": "ems-esp-neo", "channel": 1, @@ -62,7 +61,7 @@ "send_response": false }, "NTP": { - "enabled": true, + "enabled": false, "server": "time.google.com", "tz_label": "Europe/Amsterdam", "tz_format": "CET-1CEST,M3.5.0,M10.5.0/3" @@ -83,12 +82,12 @@ ] }, "Settings": { - "version": "3.8.2", + "version": "3.8.2-dev.22", "board_profile": "E32V2_2", "platform": "ESP32", "locale": "en", - "tx_mode": 1, - "ems_bus_id": 11, + "tx_mode": 5, + "ems_bus_id": 73, "syslog_enabled": false, "syslog_level": 3, "trace_raw": false, @@ -132,17 +131,7 @@ "modbus_port": 502, "modbus_max_clients": 10, "modbus_timeout": 300, - "developer_mode": true, - "email_enabled": false, - "email_ssl": false, - "email_starttls": true, - "email_server": "smtp.example.net", - "email_port": 587, - "email_login": "", - "email_pass": "", - "email_sender": "ems-esp@example.net", - "email_recp": "", - "email_subject": "ems-esp notification" + "developer_mode": false } }, { @@ -207,22 +196,14 @@ } }, { - "type": "customSupport", - "Support": { - "html": [ - "This product is installed and managed by:", - "", - "Bosch Installer Example", - "", - "Nefit Road 12", - "1234 AB Amsterdam", - "Phone: +31 123 456 789", - "email: support@boschinstaller.nl", - "", - "For help and questions please contact your installer." - ], - "img_url": "https://emsesp.org/media/images/designer.png" - } + "type": "nvs", + "nvs": [ + { + "type": 1, + "key": "fresh_firmware", + "value": 0 + } + ] } ] } \ No newline at end of file From d1d046f3fd8ddb6bc1c849074052169abff9fd6b Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 10 May 2026 13:21:47 +0200 Subject: [PATCH 160/162] package update --- interface/package.json | 6 +-- interface/pnpm-lock.yaml | 108 +++++++++++++++++++-------------------- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 14 ++--- 4 files changed, 65 insertions(+), 65 deletions(-) diff --git a/interface/package.json b/interface/package.json index 10917ffaf..ae3955baa 100644 --- a/interface/package.json +++ b/interface/package.json @@ -52,7 +52,7 @@ "@preact/compat": "^18.3.2", "@preact/preset-vite": "^2.10.5", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^25.6.0", + "@types/node": "^25.6.2", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "axe-core": "^4.11.4", @@ -61,11 +61,11 @@ "eslint-config-prettier": "^10.1.8", "prettier": "^3.8.3", "rollup-plugin-visualizer": "^7.0.1", - "terser": "^5.47.0", + "terser": "^5.47.1", "typescript-eslint": "^8.59.2", "vite": "^8.0.11", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^6.1.1" }, - "packageManager": "pnpm@10.33.4" + "packageManager": "pnpm@10.33.4+sha512.1c67b3b359b2d408119ba1ed289f34b8fc3c6873412bec6fd264fbdc82489e510fcbecb9ce9d22dae7f3b76269d8441046014bdca53b9979cd7a561ad631b800" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 261281351..bf0a2bce5 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -83,13 +83,13 @@ importers: version: 10.0.1(eslint@10.3.0) '@preact/preset-vite': specifier: ^2.10.5 - version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) + version: 2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.3) '@types/node': - specifier: ^25.6.0 - version: 25.6.0 + specifier: ^25.6.2 + version: 25.6.2 '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -115,20 +115,20 @@ importers: specifier: ^7.0.1 version: 7.0.1(rolldown@1.0.0-rc.18)(rollup@4.59.0) terser: - specifier: ^5.47.0 - version: 5.47.0 + specifier: ^5.47.1 + version: 5.47.1 typescript-eslint: specifier: ^8.59.2 version: 8.59.2(eslint@10.3.0)(typescript@6.0.3) vite: specifier: ^8.0.11 - version: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) + version: 8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) + version: 0.6.1(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)) packages: @@ -1015,8 +1015,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@25.6.0': - resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + '@types/node@25.6.2': + resolution: {integrity: sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1191,8 +1191,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.27: - resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==} + baseline-browser-mapping@2.10.29: + resolution: {integrity: sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1228,8 +1228,8 @@ packages: brace-expansion@2.1.0: resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} - brace-expansion@5.0.5: - resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} engines: {node: 18 || 20 || >=22} braces@3.0.3: @@ -1526,8 +1526,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.352: - resolution: {integrity: sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==} + electron-to-chromium@1.5.353: + resolution: {integrity: sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1928,8 +1928,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -2950,8 +2950,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + semver@7.8.0: + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} engines: {node: '>=10'} hasBin: true @@ -3137,8 +3137,8 @@ packages: resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==} engines: {node: '>=4'} - terser@5.47.0: - resolution: {integrity: sha512-TV+JFkQFtljk12ffyYAA4+zVF4Hs+qaROsT+Qo9o2/z39x+IUn+pvsmomiCPlp5YigfR1OdbGHOvc0L+Ca1X7g==} + terser@5.47.1: + resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} engines: {node: '>=10'} hasBin: true @@ -3915,19 +3915,19 @@ snapshots: dependencies: preact: 10.29.1 - '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0))': + '@preact/preset-vite@2.10.5(@babel/core@7.29.0)(preact@10.29.1)(rollup@4.59.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) + '@prefresh/vite': 2.4.12(preact@10.29.1)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) - vite-prerender-plugin: 0.5.13(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1) + vite-prerender-plugin: 0.5.13(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -3942,7 +3942,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0))': + '@prefresh/vite@2.4.12(preact@10.29.1)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3950,7 +3950,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.1 - vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1) transitivePeerDependencies: - supports-color @@ -4133,7 +4133,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.6.0 + '@types/node': 25.6.2 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -4162,19 +4162,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 25.6.0 + '@types/node': 25.6.2 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 25.6.0 + '@types/node': 25.6.2 '@types/minimatch@6.0.0': dependencies: minimatch: 10.2.5 - '@types/node@25.6.0': + '@types/node@25.6.2': dependencies: undici-types: 7.19.2 @@ -4196,11 +4196,11 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 25.6.0 + '@types/node': 25.6.2 '@types/svgo@2.6.4': dependencies: - '@types/node': 25.6.0 + '@types/node': 25.6.2 '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0)(typescript@6.0.3))(eslint@10.3.0)(typescript@6.0.3)': dependencies: @@ -4270,7 +4270,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.59.2 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.7.4 + semver: 7.8.0 tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 @@ -4361,7 +4361,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.27: {} + baseline-browser-mapping@2.10.29: {} bin-build@3.0.0: dependencies: @@ -4412,7 +4412,7 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.5: + brace-expansion@5.0.6: dependencies: balanced-match: 4.0.4 @@ -4422,9 +4422,9 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.27 + baseline-browser-mapping: 2.10.29 caniuse-lite: 1.0.30001792 - electron-to-chromium: 1.5.352 + electron-to-chromium: 1.5.353 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4788,7 +4788,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.352: {} + electron-to-chromium@1.5.353: {} emoji-regex@10.6.0: {} @@ -5193,7 +5193,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.5.0: {} + get-east-asian-width@1.6.0: {} get-intrinsic@1.3.0: dependencies: @@ -5730,7 +5730,7 @@ snapshots: minimatch@10.2.5: dependencies: - brace-expansion: 5.0.5 + brace-expansion: 5.0.6 minimatch@3.1.5: dependencies: @@ -6191,7 +6191,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.4: {} + semver@7.8.0: {} set-cookie-parser@2.7.2: {} @@ -6286,7 +6286,7 @@ snapshots: string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 string_decoder@1.1.1: @@ -6368,7 +6368,7 @@ snapshots: temp-dir: 1.0.0 uuid: 3.4.0 - terser@5.47.0: + terser@5.47.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -6483,7 +6483,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)): + vite-plugin-imagemin@0.6.1(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6508,11 +6508,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)): + vite-prerender-plugin@0.5.13(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6520,19 +6520,19 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1) - vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@6.0.3) - vite: 8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1) transitivePeerDependencies: - supports-color - typescript - vite@8.0.11(@types/node@25.6.0)(esbuild@0.27.4)(terser@5.47.0): + vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.4)(terser@5.47.1): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -6540,10 +6540,10 @@ snapshots: rolldown: 1.0.0-rc.18 tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 25.6.0 + '@types/node': 25.6.2 esbuild: 0.27.4 fsevents: 2.3.3 - terser: 5.47.0 + terser: 5.47.1 which-typed-array@1.1.20: dependencies: diff --git a/mock-api/package.json b/mock-api/package.json index dea8d1846..2c65bf4e7 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -15,5 +15,5 @@ "itty-router": "^5.0.23", "prettier": "^3.8.3" }, - "packageManager": "pnpm@10.33.1+sha512.05ba3c1d5d1c18f68df06470d74055e62d41fc110a0c660db1b2dfb2785327f04cf0f68345d4609bc52089e7fa0343c31593b2f9594e2c5d5da426230acc9820" + "packageManager": "pnpm@10.33.4+sha512.1c67b3b359b2d408119ba1ed289f34b8fc3c6873412bec6fd264fbdc82489e510fcbecb9ce9d22dae7f3b76269d8441046014bdca53b9979cd7a561ad631b800" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index d1f155ffa..1ddedb1b1 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -46,8 +46,8 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true @@ -185,7 +185,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -197,14 +197,14 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.29.2': + '@babel/parser@7.29.3': dependencies: '@babel/types': 7.29.0 '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -212,7 +212,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -249,7 +249,7 @@ snapshots: '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3)': dependencies: '@babel/generator': 7.29.1 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 From 7854349dbe539361bacd9ab7fe58f36abfd9483f Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 10 May 2026 13:22:00 +0200 Subject: [PATCH 161/162] support filesystem ota --- src/ESP32React/UploadFileService.cpp | 91 ++++++++++++++++++++-------- src/ESP32React/UploadFileService.h | 3 +- src/core/emsesp.cpp | 10 +++ src/core/system.cpp | 39 +++++++++++- src/core/system.h | 2 + src/core/telegram.h | 3 +- src/test/test.cpp | 41 +------------ src/test/test.h | 1 - 8 files changed, 120 insertions(+), 70 deletions(-) diff --git a/src/ESP32React/UploadFileService.cpp b/src/ESP32React/UploadFileService.cpp index 3d4e99152..4d0209d1f 100644 --- a/src/ESP32React/UploadFileService.cpp +++ b/src/ESP32React/UploadFileService.cpp @@ -4,6 +4,7 @@ #include #include +// #include static String getFilenameExtension(const String & filename) { const auto pos = filename.lastIndexOf('.'); @@ -16,8 +17,8 @@ static String getFilenameExtension(const String & filename) { UploadFileService::UploadFileService(AsyncWebServer * server, SecurityManager * securityManager) : _securityManager(securityManager) , _is_firmware(false) + , _is_filesystem(false) , _md5() { - // upload a file via a form server->on( UPLOAD_FILE_PATH, HTTP_POST, @@ -41,8 +42,14 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri const String extension = getFilenameExtension(filename); const std::size_t filesize = request->contentLength(); - _is_firmware = false; - if ((extension == "bin") && (filesize > 1000000)) { + _is_firmware = false; + _is_filesystem = false; + + if (extension == "bin" && filename.endsWith("littlefs.bin")) { + // LittleFS filesystem image + _is_filesystem = true; + _md5[0] = '\0'; // clear any stale md5 so Update.end() doesn't compare against it + } else if ((extension == "bin") && (filesize > 2000000)) { _is_firmware = true; } else if (extension == "json") { _md5[0] = '\0'; // clear md5 @@ -88,6 +95,7 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri #endif // it's firmware - initialize the ArduinoOTA updater emsesp::EMSESP::logger().info("Uploading firmware file %s (size: %d KB). Please wait...", filename.c_str(), filesize / 1024); + // turn off UART to prevent interference with the upload emsesp::EMSuart::stop(); @@ -96,28 +104,55 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri Update.setMD5(_md5.data()); _md5.front() = '\0'; } - request->onDisconnect([this] { handleEarlyDisconnect(); }); // success, let's make sure we end the update if the client hangs up + request->onDisconnect([this] { handleDisconnect(); }); // success, let's make sure we end the update if the client hangs up } else { handleError(request, 507); // failed to begin, send an error response Insufficient Storage return; } + } else if (_is_filesystem) { + // LittleFS filesystem image - flash directly to the spiffs/littlefs partition + emsesp::EMSESP::logger().info("Uploading filesystem image %s (size: %u KB). Please wait...", filename.c_str(), static_cast(filesize / 1024)); + emsesp::EMSuart::stop(); + LittleFS.end(); // unmount LittleFS before we overwrite the partition under it + + // request->contentLength() is the multipart HTTP body size, not the file size, + // so it can exceed the partition by a few hundred bytes. Use UPDATE_SIZE_UNKNOWN + // and let the Update library size against the whole partition. + if (Update.begin(UPDATE_SIZE_UNKNOWN, U_SPIFFS)) { + // emsesp::EMSESP::logger().info("Update.begin(U_SPIFFS) ok, partition size %u bytes", static_cast(Update.size())); + request->onDisconnect([this] { handleDisconnect(); }); + } else { + emsesp::EMSESP::logger().err("Update.begin(U_SPIFFS) failed: %s", Update.errorString()); + handleError(request, 507); + return; + } } else { // its a normal file, open a new temp file to write the contents too request->_tempFile = LittleFS.open(TEMP_FILENAME_PATH, "w"); } } - if (!_is_firmware) { - if (len && len != request->_tempFile.write(data, len)) { // stream the incoming chunk to the opened file - handleError(request, 507); // 507-Insufficient Storage - } - } else if (!request->_tempObject) { // if we haven't delt with an error, continue with the firmware update - if (Update.write(data, len) != len) { - handleError(request, 500); // internal error, failed - return; - } - if (final && !Update.end(true)) { - handleError(request, 500); // internal error, failed + if (_is_firmware || _is_filesystem) { + if (!request->_tempObject) { // if we haven't delt with an error, continue with the OTA update + if (Update.write(data, len) != len) { + emsesp::EMSESP::logger().err("Update.write failed at offset %u (chunk %u): %s", + static_cast(Update.progress()), + static_cast(len), + Update.errorString()); + handleError(request, 500); // internal error, failed + return; + } + if (final) { + if (!Update.end(true)) { + emsesp::EMSESP::logger().err("Update.end failed: %s", Update.errorString()); + handleError(request, 500); + return; + } + } + } else { + if (len && len != request->_tempFile.write(data, len)) { // stream the incoming chunk to the opened file + handleError(request, 507); // 507-Insufficient Storage + } } } } @@ -135,11 +170,13 @@ void UploadFileService::uploadComplete(AsyncWebServerRequest * request) { return; } - // check if it was a firmware upgrade - // if no error, send the success response as a JSON - if (_is_firmware && !request->_tempObject) { - // set NVS to tell EMS-ESP this is a new fresh firmware on next restart - emsesp::EMSESP::nvs_.putBool(emsesp::EMSESP_NVS_BOOT_NEW_FIRMWARE, true); + // check if it was a firmware or filesystem image upgrade + // if no error, send the success response and request a restart + if ((_is_firmware || _is_filesystem) && !request->_tempObject) { + if (_is_firmware) { + // set NVS to tell EMS-ESP this is a new fresh firmware on next restart + emsesp::EMSESP::nvs_.putBool(emsesp::EMSESP_NVS_BOOT_NEW_FIRMWARE, true); + } AsyncWebServerResponse * response = request->beginResponse(200); request->send(response); @@ -178,15 +215,21 @@ void UploadFileService::handleError(AsyncWebServerRequest * request, int code) { // that is caught by the web code. Unfortunately the http error code is not sent to the client on fast network connections if (code == 406) { request->client()->close(); - _is_firmware = false; + _is_firmware = false; + _is_filesystem = false; Update.abort(); } + + // if we aborted a filesystem upload, remount LittleFS so the device keeps working + if (_is_filesystem) { + LittleFS.begin(); + } } -void UploadFileService::handleEarlyDisconnect() { +void UploadFileService::handleDisconnect() { emsesp::EMSESP::logger().info("Upload finished"); emsesp::EMSESP::system_.uart_init(); // re-enable UART - _is_firmware = false; - Update.abort(); + _is_firmware = false; + _is_filesystem = false; } diff --git a/src/ESP32React/UploadFileService.h b/src/ESP32React/UploadFileService.h index 352342148..4c8a20dbb 100644 --- a/src/ESP32React/UploadFileService.h +++ b/src/ESP32React/UploadFileService.h @@ -22,13 +22,14 @@ class UploadFileService { private: SecurityManager * _securityManager; bool _is_firmware; + bool _is_filesystem; std::array _md5; void handleUpload(AsyncWebServerRequest * request, const String & filename, size_t index, uint8_t * data, size_t len, bool final); void uploadComplete(AsyncWebServerRequest * request); void handleError(AsyncWebServerRequest * request, int code); - void handleEarlyDisconnect(); + void handleDisconnect(); }; #endif \ No newline at end of file diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index 9d583e427..dbbc79b2f 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1710,6 +1710,11 @@ void EMSESP::start() { bool factory_settings = false; #endif +#if defined(EMSESP_DEBUG) + // LOG_DEBUG("Listing root directory before:"); + // system_.listDir("/", 3); // show the contents of the root directory +#endif + // start NVS storage if (!nvs_.begin("ems-esp", false, "nvs1")) { // try bigger nvs partition on 16M flash first nvs_.begin("ems-esp", false, "nvs"); // fallback to small nvs @@ -1724,6 +1729,11 @@ void EMSESP::start() { // loads core system services settings (network, mqtt, ap, ntp etc) esp32React.begin(); +#if defined(EMSESP_DEBUG) + // LOG_DEBUG("Listing root directory before:"); + // system_.listDir("/", 3); // show the contents of the root directory +#endif + #ifndef EMSESP_STANDALONE if (factory_settings) { LOG_WARNING("No settings found on filesystem. Using factory settings."); diff --git a/src/core/system.cpp b/src/core/system.cpp index 3a04d1028..f27ba427a 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -642,11 +642,9 @@ void System::start() { void System::button_OnClick(PButton & b) { LOG_NOTICE("Button pressed - single click"); -#if defined(EMSESP_TEST) #ifndef EMSESP_STANDALONE // show filesystem - Test::listDir(LittleFS, "/", 3); -#endif + listDir("/", 3); #endif } @@ -3435,4 +3433,39 @@ void System::restore_snapshot_gpios(std::vector & u_gpios, std::vector Date: Mon, 11 May 2026 14:35:48 +0200 Subject: [PATCH 162/162] add polarity setting for digital_in sensor, #3070 --- CHANGELOG_LATEST.md | 1 + .../src/app/main/SensorsAnalogDialog.tsx | 19 ++++++++++++++++++- src/core/analogsensor.cpp | 6 +++--- src/emsesp_version.h | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 00772509b..60c16392b 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -15,6 +15,7 @@ For more details go to [emsesp.org](https://emsesp.org/). - 2.nd freshwater module (dhw4, dhw5) [#2991](https://github.com/emsesp/EMS-ESP32/issues/2991) - full system backup and restore - auto-logic to set ht3/ems+ tx-mode +- polariity for digital_in sensors [#3070](https://github.com/emsesp/EMS-ESP32/discussions/3070) ## Fixed diff --git a/interface/src/app/main/SensorsAnalogDialog.tsx b/interface/src/app/main/SensorsAnalogDialog.tsx index ffc5a4485..877d7914f 100644 --- a/interface/src/app/main/SensorsAnalogDialog.tsx +++ b/interface/src/app/main/SensorsAnalogDialog.tsx @@ -242,6 +242,23 @@ const SensorsAnalogDialog = ({ )} + {editItem.t === AnalogType.DIGITAL_IN && ( + + + {LL.ACTIVEHIGH()} + {LL.ACTIVELOW()} + + + )} {editItem.t === AnalogType.ADC && ( = 15 && sensor.poll_ != sensor.last_reading_) { sensor.last_reading_ = sensor.poll_; if (sensor.type() == AnalogType::DIGITAL_IN) { - sensor.set_value(sensor.poll_); + sensor.set_value(sensor.factor() == 0 ? !sensor.poll_ : sensor.poll_); } else if (!sensor.poll_) { // falling edge if (sensor.type() == AnalogType::COUNTER) { sensor.set_value(old_value + sensor.factor()); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index cd5b26d88..3972166a4 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.22" +#define EMSESP_APP_VERSION "3.8.2-dev.23"